本文主要是介绍力扣19 链表 删除倒数N结点,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
问题:
1.链表的组成结构
2.如何改变倒数第N个结点
2.1 求链表长度
2.2 找到倒数第N个结点前一个结点
2.3 让倒数N前一个改变即可
3.源代码示范
问题:
1.链表的组成结构
单向链表 由value + next 组成 ,value包括此结点的各基础属性,next存储下一个结点地址
curr.next 代表curr结点指向的下一个结点,为2 ;
pre.next = curr.next 代表赋值 将curr下一个结点,作为pre的下一个结点
/** 如curr值为1 */curr.next /** 代表curr结点指向的下一个结点,为2 */curr.next.next /** curr.next指向的下一个结点,为3 */
2.如何改变倒数第N个结点
2.1 求链表长度
public int getSize(ListNode head){ListNode temp = head;int size = 0;while (temp != null) {size++;//一定要好好想想,结尾是否要迭代指针temp = temp.next;}return size;}
2.2 找到倒数第N个结点前一个结点
int sz = getSize(head); for(int i=1;i<sz-n;i++){curr = curr.next;}
2.3 让倒数N前一个改变即可
curr.next = curr.next.next;
3.源代码示范
class ListNode{int val;ListNode next;ListNode(int value,ListNode next_one){val = value;next = next_one;}
}public class Solution {public ListNode removeNthFromEnd(ListNode head,int n){// ListNode dummy = new ListNode(0, head);ListNode curr = head;int sz = getSize(head); for(int i=1;i<sz-n;i++){curr = curr.next;}curr.next = curr.next.next;//end必须在链表更新后,再获取头节点值ListNode end = head;return end;}public int getSize(ListNode head){ListNode temp = head;int size = 0;while (temp != null) {size++;//一定要好好想想,结尾是否要迭代指针temp = temp.next;}return size;}public void printNistNode(ListNode head){ListNode curr = head;while (curr != null) {System.err.println(curr.val);curr = curr.next;}}
}
这篇关于力扣19 链表 删除倒数N结点的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!