leetcode做题记录0019

leetcode 0019

说明

只是为了记录一下,不求多快,也不深究。

会简要描述思路,代码中不写注释。

如碰到不会做的用了别人代码会在博客中标出。

题目描述

在这里插入图片描述

结果

在这里插入图片描述

思路

以前学数据结构好像碰到过。

倒数第n个到最后一个之间的距离和正数第n个到第一个的距离一样。

找到正数第n+1个,然后和头指针一起往后移,最后头指针就变成了倒数第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) {
        ListNode tail = head;
        ListNode topN = head;
        int count = 1;
        while(true) {
        	if(count == n+1) {
        		break;
        	}
        	tail = tail.next;
        	count++;
        }
        if(tail == null) {
        	return head.next;
        }
        while(tail.next!=null) {
        	tail = tail.next;
        	topN = topN.next;
        }
        topN.next = topN.next.next;
		return head;
    }
}
发布了77 篇原创文章 · 获赞 1 · 访问量 2078

猜你喜欢

转载自blog.csdn.net/Paul_1i/article/details/104419545