本文主要是介绍Leetcode19删除链表的倒数第K个节点(java实现),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
今天分享的题目如下:
说一下我们的解题思路:我们要想删除第k个节点,那么指针必须落在k-1节点上,比如我们想要操作题目中的节点4,那么指针必须落在节点3,然后让节点3.next= 3.next.nex
t即可。
所以明白了这个,那么我们传入的是倒数第k个节点,我们如何让他落在他的前一个节点呢?我们只需两个指针。
首先让快慢指针都指向头结点,先让快指针移动k+1次,然后这个时候再将快慢指针同时移动,到最后,慢指针所指向的地方就是我们的目标地址。然后进行删除即可。
具体的代码实现如下:
class Solution {public ListNode removeNthFromEnd(ListNode head, int n) {ListNode cur =new ListNode(0,head);//快指针ListNode index1 = cur ;//慢指针ListNode index2 =cur ;n+=1;while(n>0&&index1!=null){//先让快指针移动n+1次index1=index1.next;n--;}while(index1!=null){//快慢指针同时移动index1=index1.next;index2=index2.next;}//找到目标节点,进行删除操作index2.next = index2.next.next;//返回虚拟节点nextreturn cur.next;}
}
那么今天的分享就到此结束了,如果有疑问欢迎在文章下方留言。
这篇关于Leetcode19删除链表的倒数第K个节点(java实现)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!