首页 > 其他分享 >leedcode-移除链表元素

leedcode-移除链表元素

时间:2024-03-08 22:44:05浏览次数:13  
标签:cur val leedcode next 链表 移除 节点

自己写的:

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next

class Solution:
    def removeElements(self, head: Optional[ListNode], val):
        # 初始化一个元组 res,包含一个布尔值和链表头部的引用
        res = (True, head)
        
        # 循环调用 remove_val 方法,直到 remove_val 返回 False,表示没有找到要移除的值
        while res[0]:
            res = self.remove_val(res[1], val)
        
        # 返回最终处理后的链表头部
        return res[1]

    def remove_val(self, head, val):
        # 初始化当前节点为链表头部
        cur = head
        # 初始化前一个节点为 None
        pre = None
        
        # 遍历链表
        while cur != None:
            # 如果当前节点的值等于要移除的值
            if cur.val == val:
                # 如果前一个节点为 None,说明要移除的值在链表头部
                # 将链表头部更新为当前节点的下一个节点
                if pre == None:
                    head = cur.next
                else:
                    # 如果前一个节点不为 None,将前一个节点的 next 指向当前节点的下一个节点
                    pre.next = cur.next
                    # 将当前节点的 next 设为 None,断开当前节点的连接
                    cur.next = None
                # 返回 True 表示已经找到并移除了值
                return True, head
            else:
                # 如果当前节点的值不等于要移除的值,更新前一个节点和当前节点的引用
                pre = cur
                cur = cur.next
        
        # 如果遍历完链表仍未找到要移除的值,返回 False
        return False, head

gpt改进:在头节点前面添加一个虚拟节点 可以省掉很多麻烦

class Solution:
    def removeElements(self, head: Optional[ListNode], val):
        # 创建一个虚拟头节点,简化对头部的处理
        dummy = ListNode(0)
        dummy.next = head
        # 初始化当前节点为虚拟头节点
        cur = dummy
        
        # 遍历链表
        while cur.next:
            # 如果当前节点的下一个节点的值等于要移除的值
            if cur.next.val == val:
                # 删除当前节点的下一个节点
                cur.next = cur.next.next
            else:
                # 如果当前节点的下一个节点的值不等于要移除的值,继续向后移动
                cur = cur.next
        
        # 返回虚拟头节点的下一个节点作为新的头部
        return dummy.next

 

标签:cur,val,leedcode,next,链表,移除,节点
From: https://www.cnblogs.com/yyyjw/p/18062010

相关文章

  • ubuntu移除snap组件
    移除ubuntu系统中的snap软件1.查看snap软件信息#使用snaplist查看系统中的snap软件root@ubuntu:~#snaplistNameVersionRevTrackingPublisherNotescore20202401112182latest/stablecanonical✓baselxd5.0.3-9a1d9042......
  • C 语言整数单链表的表示和实现 数据结构课程设计报告
     数据结构课程设计报告专业名称:计算机科学与技术 课程名称:数据结构        实训题目:整数单链表的表示和实现                           实训环境:C语言实现(DevC++)                    ......
  • 基本操作之——Object移除操作
    remove_obj—Removeobjectsfromaniconicobjecttuple.从图形数组中移除对象**Thisexampledemonstratesvarioususecasesfortheremove_objoperator.*此示例演示了remove_obj运算符的各种用例*dev_update_off()dev_close_window()dev_open_window(0,0,......
  • 03——链表
    链表经典的链表应用场景:LRU缓存淘汰算法。缓存是一种提高数据读取性能的技术,在硬件设计、软件开发中都有着非常广泛的应用,比如常见的CPU缓存、数据库缓存、浏览器缓存等等。缓存的大小有限,当缓存被用满时,哪些数据应该被清理出去,哪些数据应该被保留?这就需要缓存淘汰策略来决......
  • Python list列表pop弹出内容del移除内容结果不对错误
    前言全局说明Pythonlist列表pop弹出内容del移除内容结果不对一、功能需求一个list列表,内容是1-9,用for循环打印,打印过的值,从列表中删除二、输出结果不对,代码有问题文件名:test.py#!/usr/bin/envpython3#coding:UTF-8#-*-coding:UTF-8-*-lists_1=['a','b']......
  • leedcode 位1的数量
    自己写的classSolution:defhammingWeight(self,n:int)->int:#将整数n转换为二进制字符串,去除前缀'0b'n_str=bin(n)[2:]#用于存储'1'的列表res_li=[]#遍历二进制字符串的每一位foriinn_str:......
  • leedcode 颠倒二进制
    使用bin函数classSolution:defreverseBits(self,n:int)->int:#将整数n转换为二进制字符串,并用左0填充至32位binary_str=bin(n)[2:].zfill(32)#反转二进制字符串reversed_str=binary_str[::-1]#将反转后的......
  • 代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素。
    704.二分查找https://leetcode.cn/problems/binary-search/description/一、左闭右闭`//左闭右闭publicstaticinterFen1(int[]nums,inttarget){if(target<nums[0]||target>nums[nums.length-1]){return-1;}intmaxIndex=nums.length-......
  • 链表
    一、移除链表元素构造虚拟链表,虚拟链表的头节点的指针指向链表头节点 二、设计链表构造函数创建新的链表节点对象 三、反转链表思想:改变指针指向,利用temp指针指向每次断开链表的head位置,和双指针更改指向双指针or递归 四、两两交换相邻节点不改变节点值的情况下考虑......
  • Leetcode刷题第十六天-链表
    24:两两交换链表中的节点链接:24.两两交换链表中的节点-力扣(LeetCode)虚拟头节点#Definitionforsingly-linkedlist.#classListNode:#def__init__(self,val=0,next=None):#self.val=val#self.next=nextclassSolution:defswap......