• LeetCode——Remove Nth Node From End of List


    Given a linked list, remove the nth node from the end of list and return its head.

    For example,

       Given linked list: 1->2->3->4->5, and n = 2.
    
       After removing the second node from the end, the linked list becomes 1->2->3->5.
    

    Note:
    Given n will always be valid.
    Try to do this in one pass.

    原题链接:https://oj.leetcode.com/problems/remove-nth-node-from-end-of-list/

    题目:给定一个链表,从尾部删除第n个节点并返回新的链表。

    思路:使用两个指针,fast 和 slow,他们的距离是n,于是fast到尾的时候,n所在的节点就是须要删除的节点。

    	public ListNode removeNthFromEnd(ListNode head, int n) {
    		ListNode slow = head, fast = head;
    		if (head.next == null)
    			return null;
    		for (int i = 1; i <= n; i++)
    			slow = slow.next;
    		if (slow == null) {
    			head = head.next;
    			return head;
    		}
    		while (slow.next != null) {
    			slow = slow.next;
    			fast = fast.next;
    		}
    		fast.next = fast.next.next;
    		return head;
    	}
        // Definition for singly-linked list.
        public class ListNode {
            int val;
            ListNode next;
            ListNode(int x) { val = x; }
        }



  • 相关阅读:
    第一个
    一点收获
    又是两个小时
    大学坑真多
    步入正轨
    linux find grep 查找命令
    ROS下使用ASUS Xtion Pro Live
    更改文件所有者和群组
    如何在Ubuntu 14.04中安装最新版Eclipse
    1.关于无rospy.spin()调用多次callback 2. subscrib后面语句和callback函数运行顺序
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/4024233.html
Copyright © 2020-2023  润新知