精华内容
下载资源
问答
  • 给定一个链表删除链表倒数第n个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除倒数第二个节点后,链表变为 1->2->3->5. 说明: 给定的n...

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

    示例:

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

    说明:

    给定的 n 保证是有效的。

    采取暴力法:

    /**
     * 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) return head;
            ListNode dum = new ListNode(0);
            ListNode cur = dum;
            int len=0;
            cur.next=head;
            while(head!=null)
            {
              head=head.next;
              len++;
            }
            for(int i=1;i<=len-n;i++)    //记得循环次数问题  初始cur在head前一位
                    cur=cur.next;
            cur.next=cur.next.next;   //切记不能写成cur=cur.next.next   只是移动  并没有指向
            return dum.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;
    	}
    }
    
    展开全文
  • 19.删除链表倒数第N个节点Java 题目描述 给你一个链表,删除链表的倒数 n 个结点,并且返回链表的头结点。 进阶:你能尝试使用一趟扫描实现吗? 输入输出样式 示例1: 输入:head = [1,2,3,4,5], n = 2 输出:[1,2...

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

    题目描述

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

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

    输入输出样式

    示例1:
    输入:head = [1,2,3,4,5], n = 2
    输出:[1,2,3,5]
    在这里插入图片描述

    示例2:
    输入:head = [1], n = 1
    输出:[]

    本题来自LeetCode:https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/

    思路

    1. 常规方法:遍历两边,第一遍求总节点数,第二遍找到倒数第N个节点
    2. 我的思路:构建一个长度为N的“卡尺”和卡尺前的prev节点(用于删除元素),移动卡尺和prev知道卡尺的右端right.next为空说明到达尾端,这样卡尺的左端left就是倒数第N个元素了,直接pre.next = left.next即可。这样只需要遍历一遍链表。

    算法分析

    时间复杂度O(n),空间复杂度为O(1)

    求解函数

    /**
     * Definition for singly-linked list.
     * public class ListNode {
     *     int val;
     *     ListNode next;
     *     ListNode() {}
     *     ListNode(int val) { this.val = val; }
     *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
     * }
     */
    public class Solution19 {
        public static void main(String[] args) {
            ListNode n5 = new ListNode(5, null);
            ListNode n4 = new ListNode(4, n5);
            ListNode n3 = new ListNode(3, n4);
            ListNode n2 = new ListNode(2, n3);
            ListNode n1 = new ListNode(1, n2);
            ListNode cur = n1;
            Solution19 sol = new Solution19();
            cur = sol.removeNthFromEnd(n1, 2);
            while (cur != null) {
                System.out.println(cur);
                cur = cur.next;
            }
        }
    
        public ListNode removeNthFromEnd(ListNode head, int n) {
            if (head == null) return head;
            ListNode dum = new ListNode(0, head);
            ListNode left = head, right = head, prev = dum;
            //建立卡尺
            for (int i = 1; i < n; ++i) {
                right = right.next;
            }
            //直到卡尺到达尾部
            while (right.next != null) {
                right = right.next;
                prev = prev.next;
                left = left.next;
            }
            //删除第N个节点
            prev.next = left.next;
            return dum.next;
        }
    }
    

    测试结果

    在这里插入图片描述

    展开全文
  • 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;
          }
    
    展开全文
  • 给定一个链表删除链表倒数第n个节点并返回链表的头指针 例如, 给出的链表为:1->2->3->4->5, n= 2. 删除链表倒数第n个节点之后,链表变为1->2->3->5. 备注: 题目保证n一定是有效的 ...
  • 给出一个单向链表,删除链表倒数第n个节点,并返回头节点。 例如: 给出链表 1-&amp;gt;2-&amp;gt;3-&amp;gt;4-&amp;gt;5,n=2 返回链表 1-&amp;gt;2-&amp;gt;3-&amp;gt;5 解题...
  • 链表,删除链表倒数第N个节点 1. 题目描述 难易度:中等 给定一个链表,删除链表的倒数 n 个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数二个节点后...
  • package daily20201228;... * @description : 删除链表倒数第n个节点 * @create : 2020/12/28 20:44 */ class ListNode{ int val = 0; ListNode next; ListNode(int x){ this.val = x; } } public class rem
  • 给定一个链表删除链表倒数第n个节点,返回链表的头节点。  注意事项 链表中的节点个数大于等于n 您在真实的面试中是否遇到过这个题?  Yes 样例 给出链表1->2->3->4-...
  • 删除链表倒数第N个节点 删除链表中的节点 题目描述: 237.删除链表中的节点 请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除节点。 现有一个链表 -- head = [4,5,1,9],...
  • 由于我们要删除倒数第n个节点,所以我们设置两个快慢指针 tail 和 head,同时对链表进行遍历,并且 tail 比 head 超前 n 个节点。当 tail 遍历到链表的末尾时,head 就恰好处于倒数第 n 个节点
  • 删除链表倒数第N个节点 ACM模式的链表输入要掌握好,这里比较复杂。 import java.util.Scanner; import java.util.Stack; //ACM模式删除链表倒数第N个节点。leetcode题目 public class deleteNode { public static ...
  • 删除了链表的倒数 n个节点之后,链表变为1→2→3→5 以下是本篇文章正文内容,下面案例可供参考 解题思路 看到此题,立马想到了找到链表倒数第k个结点 方法类似, 若要删除一个结点,可以将此结点的前驱的后继变成...
  • 删除链表倒数第N个节点java实现) 题目 给定一个链表删除链表倒数第 n 个节点并返回头结点。 例如,给定一个链表: 1->2->3->4->5, 并且 n = 2. 当删除倒数第二个节点链表变成了 1->2->...
  • 删除链表倒数第N个节点 https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/ 给定一个链表删除链表倒数第n个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4-&...
  • 题目: 思路: 代码 方法一:l+1-n 求出链表长度 class Solution { public ListNode ... //倒数第n个节点是正数l-n个节点 现在有l+1-n个节点 //我们要找到删除的上一个节点 l-n+1 -1 ListNode cur=dum
  • 给定一个链表,删除链表倒数第N个节点,并返回链表头结点。 如:给定链表1-&gt;2-&gt;3-&gt;4-&gt;5 以及n = 2,返回链表1-&gt;2-&gt;3-&gt;5。 思路:两个指针,相距n,当后一个指针...
  • 找到单链表倒数第n个节点,保证链表节点的最少数量为n。 您在真实的面试中是否遇到过这个题?  Yes 样例 给出链表 3->2->1->5->null和n = 2,返回倒数第二个节点的值1. /** * ...
  • * @description : 删除链表倒数第n个结点 * @create : 2020/11/21 14:10 */ public class RemoveNthFromEnd { //给定一个链表,返回一个结点 public static class ListNode{ int val; ListNode next;
  • 哨兵节点删除链表倒数第N个节点

    千次阅读 2020-09-03 20:56:41
    01、哨兵节点链表的题目中,十道有九道会用到哨兵节点,所以我们...举例子,比如我们要删除链表元素,常见的删除链表的操作是找到要删元素的前一元素,假如我们记为 pre。我们通过: pre.Next = pr
  • 主要介绍了Java输出链表倒数第k个节点的相关内容,涉及三种设计思路及代码示例,具有一定参考价值,需要的朋友可以了解下。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,943
精华内容 4,377
关键字:

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

java 订阅