首页 > 其他分享 >力扣203 移除链表元素

力扣203 移除链表元素

时间:2022-11-10 19:50:31浏览次数:49  
标签:力扣 head curr cur val next 链表 移除 ListNode

题目:

给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。

示例:

输入:head = [1,2,6,3,4,5,6], val = 6

输出:[1,2,3,4,5]

 

不添加虚拟结点:

//时间O(n)  空间O(1)
public ListNode removeElements(ListNode head, int val) {
    while(head!=null && head.val==val){
        head = head.next;
    }
    ListNode curr = head;
    while(curr!=null){
        while(curr.next!=null && curr.next.val == val){//删除的就是curr.next
            curr.next = curr.next.next;
        }
        curr = curr.next;
    }
    return head;
}

 

添加虚拟结点:

添加虚拟结点指向头结点,这样头结点和其他结点就一样了,删除操作规则会比较统一。

要删除一个元素,需要知道它前一个元素是谁,所以删除cur.next而非cur。

//时间O(n) 空间O(1)
public ListNode removeElements(ListNode head, int val) { if (head == null) { return head; } // 因为删除可能涉及到头节点,所以设置dummy节点,统一操作 ListNode dummy = new ListNode(-1, head); dummy.next=head;//虚拟节点指向头结点 ListNode cur = dummy;//让cur指针遍历链表 while (cur.next!= null) { if (cur.next.val == val) { cur.next = cur.next.next; } else { cur=cur.next; } } return dummy.next; }

 

 

 



标签:力扣,head,curr,cur,val,next,链表,移除,ListNode
From: https://www.cnblogs.com/cjhtxdy/p/16878111.html

相关文章

  • 142.环形链表 II
    给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环......
  • 力扣 矩阵置零
      classSolution{  publicvoidsetZeroes(int[][]matrix){    Set<Integer>row_zero=newHashSet<>();    Set<Integer>col_zero=......
  • 力扣 有效的数独
    class Solution {    public boolean isValidSudoku(char[][] board) {        int row[][] = new int[9][10];        int col[][] ......
  • 力扣-560-和为K的子数组
    和为K的子数组…首先子数组和子串一样,都是连续的又是dp的感觉…好像又用不到dp虽然不是dp的思路,但是感觉写出来跟dp很像intsubarraySum(vector<int>&nums,intk){......
  • 142. 环形链表 II
    142.环形链表II给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。如果链表中有某个节点,可以通过连续跟踪next指针再次到达......
  • 一个数组中的元素在另一个数组中存在,就移除
    提供两种解决办法方案一//两个数组,一个数组a中的元素在另一个数组b中存在,就把A中的这个元素移除,得到新的数组publicstaticString[]getNewArrByTwoArr(String[]......
  • 19. 删除链表的倒数第 N 个结点
    19.删除链表的倒数第N个结点给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。示例1:输入:head=[1,2,3,4,5],n=2输出:[1,2,3,5]示例2:输入:hea......
  • 用JavaScript实现事件移除,派发,委托
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"content......
  • 206. 反转链表
    206.反转链表给你单链表的头节点head,请你反转链表,并返回反转后的链表。示例1:输入:head=[1,2,3,4,5]输出:[5,4,3,2,1]示例2:输入:head=[1,2]输出:[2,1]示例......
  • 203. 移除链表元素
    203.移除链表元素给你一个链表的头节点head和一个整数val,请你删除链表中所有满足Node.val==val的节点,并返回新的头节点。示例1:输入:head=[1,2,6,3,4,5,......