• LeetCode(19) - Remove Nth Node From End of List


      题目要求是,给你一个单向链表,和一个数字n,删除该链表倒数第n个node,其中测试案例中n能保证一定有效。

      思路很简单,用两个指针,它们两个相隔为n,当后面的指针指向链表尾的时候,前面的指针指向的node的下一个node,就是要删除的那一个。

      代码如下:

     1 /**
     2  * Definition for singly-linked list.
     3  * public class ListNode {
     4  *     int val;
     5  *     ListNode next;
     6  *     ListNode(int x) { val = x; }
     7  * }
     8  */
     9 public class Solution {
    10     public ListNode removeNthFromEnd(ListNode head, int n) {
    11         //当可能需要处理head的时候,用dumpNode来指向head,处理起来会方便很多。
    12         ListNode dumpNode = new ListNode(0);
    13         dumpNode.next = head;
    14         ListNode prev = dumpNode;
    15         ListNode curr = prev;
    16         //让prev和curr的距离为n
    17         while (n-- > 0) {
    18             curr = curr.next;
    19         }
    20         //让curr走到链表尾部,prev随着curr一起走,
    21         while (curr.next != null) {
    22             prev = prev.next;
    23             curr = curr.next;
    24         }
    25         //删除prev的下一个链表。
    26         prev.next = prev.next.next;
    27         //返回head。
    28         return dumpNode.next;
    29     }
    30 }
  • 相关阅读:
    剑指Offer47 不用加减乘除做加法
    剑指Offer46 求1+2+...+n
    剑指Offer45 约瑟夫环
    剑指Offer44 扑克牌的顺子
    剑指Offer43 n个骰子点数概率
    面试题分享
    初识python版本
    redis安装部署
    配置本地yum源
    闭包、装饰器
  • 原文地址:https://www.cnblogs.com/kepuCS/p/5271698.html
Copyright © 2020-2023  润新知