精华内容
下载资源
问答
  • Java实现Leetcode链表-删除链表的倒数第N个节点 一、 问题描述 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个...

    Java实现Leetcode链表-删除链表的倒数第N个节点

    一、 问题描述

    给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。

    示例:

    给定一个链表: 1->2->3->4->5, 和 n = 2.

    当删除了倒数第二个节点后,链表变为 1->2->3->5.
    说明:

    给定的 n 保证是有效的。

    进阶:

    你能尝试使用一趟扫描实现吗?

    方法一:两次扫描

    第一次扫描求出链表长度;
    第二次将倒数n个转化成正数length-n个,然后执行删除。

    实现代码如下:

    public static ListNode removeNthFromEnd(ListNode head, int n) {
        	  ListNode dummy= new ListNode(0);
        	  dummy.next=head;
        	  int length=0;
        	  ListNode first=head;
        	  while(first!=null) {
        		  length++;
        		  first=first.next;
        	  }
        	  length-=n;
        	  first=dummy;
        	  while(length>0) {
        		  length--;
        		  first=first.next;
        	  }
        	  first.next=first.next.next;
              return dummy.next;
              }
    

    方法二

    一次扫描

    实现代码如下:

     public static ListNode removeNthFromEnd(ListNode head, int n) {
        	  //定义一个哑结点指向头结点
        	  ListNode dummuy=new ListNode(0);
        	  dummuy.next=head;
        	  ListNode p1=dummuy,p2=dummuy;//定义两个工作指针
        	  //先让p1移动n次
        	  while(n>0) {
        		  n--;
        		  p1=p1.next;
        	  }
        	  //让p1和p2一起移动,至到p1.next=null
        	  while(p1.next!=null) {
        		  p1=p1.next;
        		  p2=p2.next;
        	  }
        	  //执行删除
        	  p2.next=p2.next.next;
        	  return dummuy.next;
          }
    
    展开全文
  • Java实现 LeetCode 19删除链表的倒数第N个节点

    万次阅读 多人点赞 2020-02-12 15:09:52
    19. 删除链表的倒数第N个节点 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3-&...

    19. 删除链表的倒数第N个节点

    给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。

    示例:

    给定一个链表: 1->2->3->4->5, 和 n = 2.

    当删除了倒数第二个节点后,链表变为 1->2->3->5.
    说明:

    给定的 n 保证是有效的。

    进阶:

    你能尝试使用一趟扫描实现吗?

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    PS:
    递归大法:1ms

    /**
     * Definition for singly-linked list.
     * public class ListNode {
     *     int val;
     *     ListNode next;
     *     ListNode(int x) { val = x; }
     * }
     */
    class Solution {
        public ListNode removeNthFromEnd(ListNode head, int n) {
           return removeNode(head,n)==n?head.next:head;
    	}	
    	public int removeNode(ListNode node,int n) {		
    		if(node.next == null)  return 1;
    		int m = removeNode(node.next, n);
    		if(m == n) 
    			if(m == 1) node.next = null;
    			else node.next = node.next.next;
    		return m+1;
    	}
    }
    
    展开全文
  • 删除链表的倒数第N个节点java实现) 题目 给定一个链表,删除链表的倒数第 n 个节点并返回头结点。 例如,给定一个链表: 1->2->3->4->5, 并且 n = 2. 当删除了倒数第二个节点后链表变成了 1->2->...

    转载自 LeetCode - 删除链表的倒数第N个节点,如果不太理解代码可以去这个博客看看链表-如何高效删除链表的倒数第N个节点

    删除链表的倒数第N个节点(java实现)

    题目
    给定一个链表,删除链表的倒数第 n 个节点并返回头结点

    例如,给定一个链表: 1->2->3->4->5, 并且 n = 2. 当删除了倒数第二个节点后链表变成了 1->2->3->5.

    说明:
    给的 n 始终是有效的。尝试一次遍历实现。

    解法
    很简单的一道题,既然只允许遍历一次,且N一直有效,那么可以利用双指针解法(前指针、后指针),让前指针先走N步,再让两个在指针同时后移,直到前指针到达尾部,此时,后指针的下一个节点就是要被删除的节点了。

    @Test
    public void test() {
        ListNode head = new ListNode(1);
        ListNode listNode = removeNthFromEnd(head, 1);
        System.out.println(listNode);
    }
    
    public ListNode removeNthFromEnd(ListNode head, int n) {
        ListNode preNode = head;
        ListNode curNode = head;
    
        for (int i = 0; i < n; i++) {
            curNode = curNode.next;
        }
    
        if (curNode == null) {
            return preNode.next;
        }
    
        while (curNode.next != null) {
            preNode = preNode.next;
            curNode = curNode.next;
        }
    
        preNode.next = preNode.next.next;
    
        return head;
    }
    
    class ListNode {
        int val;
        ListNode next;
    
        ListNode(int x) {
            val = x;
        }
    }
    
    展开全文
  • 删除链表的倒数第N个节点 https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/ 给定一个链表,删除链表的倒数第n个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4-&...

    删除链表的倒数第N个节点

    https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/

    给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。

    示例:

    给定一个链表: 1->2->3->4->5, 和 n = 2.

    当删除了倒数第二个节点后,链表变为 1->2->3->5.

    /**
     * Definition for singly-linked list.
     * public class ListNode {
     *     int val;
     *     ListNode next;
     *     ListNode(int x) { val = x; }
     * }
     */
    class Solution {
        public ListNode removeNthFromEnd(ListNode head, int n) {
            if(head==null||n==0){
                return null;
            }
            int i=0;
            ListNode f=head;
            ListNode s=head;
            ListNode p=head;
            //快节点先走n-1步
            while(f.next!=null&&i<n-1){
                f=f.next;
                i++;
            }
            //如果当前快节点到头了但是还没走到n-1步,说明链表长度不够,直接返回
            if(f.next==null&&i<n-1){
                return head;
            }
            //如果当前快节点到头了并且走到n-1步,说明删除链表头结点,返回head.next
            if(f.next==null&&i==n-1){
                return head.next;
            }
            //此时快慢同时出发,到快节点到头为止
            while(f.next!=null){
                f=f.next;
                //p记录s的前置节点
                p=s;
                s=s.next;
            }
            //删除s
            p.next=s.next;
            return head;
        }
    }

     

    展开全文
  • 1. 删除链表的倒数第N个节点 给定一个链表,删除链表的倒数第n个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3...
  • 给定一个链表,删除链表倒数第n个节点,返回链表的头节点。  注意事项 链表中的节点个数大于等于n 您在真实的面试中是否遇到过这个题?  Yes 样例 给出链表1->2->3->4-...
  • 删除链表的倒数第N个节点 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3-&...
  • 给定一个链表,删除链表的倒数第n个节点,并且返回链表的头结点。 示例 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5. 思路与代码 ​...
  • 删除链表的倒数第N个节点 文章目录Leetcode算法Java全解答--19. 删除链表的倒数第N个节点题目想法结果总结代码我的答案大佬们的答案测试用例其他 题目 给定一个链表,删除链表的倒数第n个节点,并且返回链表的头...
  • 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5. 说明: 给定的 n 保证是...
  • 题目:给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5. 说明: 给定的 n ...
  • 删除链表的倒数第N个节点做题博客链接题目链接描述示例初始代码模板代码 做题博客链接 https://blog.csdn.net/qq_43349112/article/details/108542248 题目链接 ...描述 给你一个链表,删除链表的倒数第 n 个结点,并且...
  • 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5. 代码实现 public class...
  • 给定一个链表,删除链表的倒数第 n 个节点。例如,给定一个链表: 1 -> 2 -> 3 -> 4 -> 5, 和 n = 2。当删除了倒数第二个节点后,链表变为 1 -> 2 -> 3 -> 5。 你可以假设,给定的 n 是有效的。...
  • 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 给定一个链表: 1-&gt;2-&gt;3-&gt;4-&gt;5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1-&gt;2-&gt;3...
  • 文章目录题目代码 题目 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->... * [19] 删除链表的倒数第N个节点 */ // @lc code=
  • //给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 // // 示例: // // 给定一个链表: 1->2->3->4->5, 和 n = 2. // //当删除了倒数第二个节点后,链表变为 1->2->3->5. /...
  • 删除链表的倒数第N个节点java、python) 1、问题描述 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个...
  • 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 给定一个链表: 1-&gt;2-&gt;3-&gt;4-&gt;5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1-&gt;2-&gt;3...
  • 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5. 说明: 给定的 n 保证是...
  • 给定一个链表,删除链表的倒数第n个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5. 说明: 给定的 n保证...
  • 删除链表的倒数第N个节点 思路:  首先,可以先遍历一遍得到链表长度,再寻找待删除的节点。 一遍循环的实现方法:  两个指针first和second,first先于seconnd指针n步,即first指针先后移n步,然后二者再同步后移...
  • 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 说明: 给定的 n 保证是有效的。 进阶: 你能尝试使用一趟扫描实现吗? /** * Definition for singly-linked list. * public class ListNode { ...

空空如也

空空如也

1 2 3 4 5
收藏数 95
精华内容 38
关键字:

java实现删除链表的倒数第n个节点

java 订阅