Leetcode2032419如何给链表添加前缀节点以增加头结点?

2026-05-19 17:511阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计721个文字,预计阅读时间需要3分钟。

Leetcode203/24/19如何给链表添加前缀节点以增加头结点?

链表之增加头结点的简化版:在许多链表题目中,常常需要在目标头结点前增加一个前缀节点。通常在题目给出的头结点前添加一个前缀节点,以便于操作。当需要删除链表和头结点时,如果增加了这个节点,就需使用这一操作。因为添加这个节点可以避免直接对删除操作进行操作。

链表之增加头结点的前缀节点

  • 在许多链表题中往往需要在题目给的头结点之前增加一个前缀节点
  • 通常在删除链表和头结点需要交换时需要用到这一操作
  • 因为增加这个节点就避免了对删除头结点这种特殊情况的特殊处理
  • 而且往往在声明一个前缀节点之后再复制一个,前者保存不动用于最后结果返回,后者参与之后的操作

​ Leetcode203删除链表元素

  • 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点
  • 输入:head = [1,2,6,3,4,5,6], val = 6
  • 输出:head = [1,2,6,3,4,5,6], val = 6

public ListNode removeElements(ListNode head, int val) { ListNode prefinalHead=new ListNode(-1,head); ListNode preHead=prefinalHead; while(head!=null){ if(head.val==val){ preHead.next=head.next; }else{ preHead=preHead.next; } head=head.next; } return prefinalHead.next; }

Leetcode24两两交换链表中的节点

  • 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)
  • 输入:head=[1,2,3,4]
  • 输出:[2,1,4,3]

public ListNode swapPairs(ListNode head) { if(head==null){//没元素 return null; } if(head.next==null){//只有一个元素 return head; } ListNode pre=head; ListNode post=head.next; ListNode finallastpre=new ListNode(-1,head); ListNode lastpre=finallastpre; while(pre!=null){ if(post==null){//最后只剩一个节点 pre=pre.next; }else{ ListNode temp=post.next; post.next=pre; lastpre.next=post; pre.next=temp; lastpre=pre; pre=pre.next; if(temp!=null){ post=temp.next; }else{ post=null; } } } return finallastpre.next; }

Leetcode19删除链表的倒数第N个结点

Leetcode203/24/19如何给链表添加前缀节点以增加头结点?

  • 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点
  • 输入:head=[1,2,3,4,5],n=2
  • 输出:[1,2,3,5]

public ListNode removeNthFromEnd(ListNode head, int n) { ListNode prefinalHead=new ListNode(-1,head); ListNode preHead=prefinalHead; ListNode fast=head; ListNode slow=head; for(int i=1;i<n;i++){ fast=fast.next; } while(fast.next!=null){ slow=slow.next; fast=fast.next; preHead=preHead.next; } preHead.next=slow.next; return prefinalHead.next; }

标签:

本文共计721个文字,预计阅读时间需要3分钟。

Leetcode203/24/19如何给链表添加前缀节点以增加头结点?

链表之增加头结点的简化版:在许多链表题目中,常常需要在目标头结点前增加一个前缀节点。通常在题目给出的头结点前添加一个前缀节点,以便于操作。当需要删除链表和头结点时,如果增加了这个节点,就需使用这一操作。因为添加这个节点可以避免直接对删除操作进行操作。

链表之增加头结点的前缀节点

  • 在许多链表题中往往需要在题目给的头结点之前增加一个前缀节点
  • 通常在删除链表和头结点需要交换时需要用到这一操作
  • 因为增加这个节点就避免了对删除头结点这种特殊情况的特殊处理
  • 而且往往在声明一个前缀节点之后再复制一个,前者保存不动用于最后结果返回,后者参与之后的操作

​ Leetcode203删除链表元素

  • 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点
  • 输入:head = [1,2,6,3,4,5,6], val = 6
  • 输出:head = [1,2,6,3,4,5,6], val = 6

public ListNode removeElements(ListNode head, int val) { ListNode prefinalHead=new ListNode(-1,head); ListNode preHead=prefinalHead; while(head!=null){ if(head.val==val){ preHead.next=head.next; }else{ preHead=preHead.next; } head=head.next; } return prefinalHead.next; }

Leetcode24两两交换链表中的节点

  • 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)
  • 输入:head=[1,2,3,4]
  • 输出:[2,1,4,3]

public ListNode swapPairs(ListNode head) { if(head==null){//没元素 return null; } if(head.next==null){//只有一个元素 return head; } ListNode pre=head; ListNode post=head.next; ListNode finallastpre=new ListNode(-1,head); ListNode lastpre=finallastpre; while(pre!=null){ if(post==null){//最后只剩一个节点 pre=pre.next; }else{ ListNode temp=post.next; post.next=pre; lastpre.next=post; pre.next=temp; lastpre=pre; pre=pre.next; if(temp!=null){ post=temp.next; }else{ post=null; } } } return finallastpre.next; }

Leetcode19删除链表的倒数第N个结点

Leetcode203/24/19如何给链表添加前缀节点以增加头结点?

  • 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点
  • 输入:head=[1,2,3,4,5],n=2
  • 输出:[1,2,3,5]

public ListNode removeNthFromEnd(ListNode head, int n) { ListNode prefinalHead=new ListNode(-1,head); ListNode preHead=prefinalHead; ListNode fast=head; ListNode slow=head; for(int i=1;i<n;i++){ fast=fast.next; } while(fast.next!=null){ slow=slow.next; fast=fast.next; preHead=preHead.next; } preHead.next=slow.next; return prefinalHead.next; }

标签: