首页 > 编程语言 >03天【代码随想录算法训练营34期】第二章 链表part01(203.移除链表元素 、707.设计链表 、 206.反转链表 )

03天【代码随想录算法训练营34期】第二章 链表part01(203.移除链表元素 、707.设计链表 、 206.反转链表 )

时间:2024-03-23 19:01:13浏览次数:22  
标签:head curr val self 随想录 next 链表 移除

203.移除链表元素
竟然可以做个假head,学到了

class ListNode(object):
     def __init__(self, val=0, next=None):
         self.val = val
         self.next = next
class Solution(object):
    def removeElements(self, head, val):
        dummy_head = ListNode(-1)
        dummy_head.next = head

        current_node = dummy_head
        while current_node.next != None:
            if current_node.next.val == val:
                current_node.next = current_node.next.next
            else:
                current_node = current_node.next
        return dummy_head.next

707.设计链表

206.反转链表

class ListNode(object):
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next
class Solution(object):
    def reverseList(self, head):
        tailNode = None
        newNode = None
        while head:
            newNode = ListNode(head.val, tailNode)
            tailNode = newNode
            head = head.next
        return newNode

If save space:

class Solution(object):
    def reverseList(self, head):
        # Initialize prev pointer as NULL...
        prev = None
        # Initialize the curr pointer as the head...
        curr = head
        # Run a loop till curr points to NULL...
        while curr:
            # Initialize next pointer as the next pointer of curr...
            next = curr.next
            # Now assign the prev pointer to curr’s next pointer.
            curr.next = prev
            # Assign curr to prev, next to curr...
            prev = curr
            curr = next
        return prev       # Return the prev pointer to get the reverse linked list...

标签:head,curr,val,self,随想录,next,链表,移除
From: https://www.cnblogs.com/miramira/p/18091542

相关文章

  • 代码随想录算法训练营第五十五天| ● 583. 两个字符串的删除操作 ● 72. 编辑距离
    两个字符串的删除操作 题目链接:583.两个字符串的删除操作-力扣(LeetCode)思路:第一次尝试用画图法,然后肉眼观察dp递归规律……但是dp[i][j]的含义还是参考昨天的思路,表示到此处需要删除多少个字符。classSolution{public:intminDistance(stringword1,stringword2......
  • 代码随想录算法训练营第3天 | 链表 |虚拟头哨兵
    链表理论基础链表节点的定义structListNode{intval;//节点上存储的元素ListNode*next;//指向下一个节点的指针ListNode(intx):val(x),next(NULL){}//节点的构造函数};==如果不自己定义构造函数,就无法通过ListNodep(5);来初始化203删除......
  • 代码随想录算法训练营day31 | leetcode 455. 分发饼干、376. 摆动序列、53. 最大子数
    目录贪心理论基础核心:题目链接:455.分发饼干-简单题目链接:376.摆动序列-中等题目链接:53.最大子数组和-中等贪心理论基础核心:由局部推全局最优题目链接:455.分发饼干-简单题目描述:假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每......
  • 代码随想录算法训练营第十八天| 513. 找树左下角的值 112. 路径总和 113. 路径总和
    513.找树左下角的值https://leetcode.cn/problems/find-bottom-left-tree-value/description/publicintfindBottomLeftValue(TreeNoderoot){intval=0;Deque<TreeNode>deque=newArrayDeque<>();deque.offer(root);whi......
  • 【代码随想录】零钱兑换
    题目描述分析这道题分析起来并不难。递推公式也能分析出来,但是我当时写的时候疑惑的一个问题就是:如何判断硬币组合的总额刚好等于需要的金额,因为这里的dp数组很明显是组成总金额所需的最少硬币个数。我试着加了一个数组存储当前情况下的金额。但是想一下就知道这样太笨了。实......
  • 代码随想录算法训练营第day54|392.判断子序列 、 115.不同的子序列
    目录392.判断子序列115.不同的子序列392.判断子序列力扣题目链接(opensnewwindow)给定字符串s和t,判断s是否为t的子序列。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而......
  • 【MMD x EEVEE教程】材质篇 • 移除天空球环境反射
    社友们在用eevee做mmd的过程中可能会遇到下边的问题,在一些光滑,或者能反射周围环境的材质中,无法消除hdri环境的反射类似下边这样 教程中的blender文件会在文章末尾给出打开blender,右侧面板中,渲染属性 -> 打开屏幕空间反射 -> 勾选折射 载入一个环境纹理 新建......
  • 【代码随想录】零钱兑换II(关于组合与排列的区别)
    题目描述分析按动态规划的分析步骤分析的话,代码是不难写出来的,但是写出来后你就会发现,结果不对,多出了很多组合:解决方法:什么都不用改,直接把两个循环调换即可。。代码如下:#include<bits/stdc++.h>usingnamespacestd;intchange(intamount,vector<int>&coins){ i......
  • 数据结构——单向链表(C语言版)
    在数据结构和算法中,链表是一种常见的数据结构,它由一系列节点组成,每个节点包含数据和指向下一个节点的指针。在C语言中,我们可以使用指针来实现单向链表。下面将详细介绍如何用C语言实现单向链表。目录1.定义节点结构体2.初始化链表3.插入节点4.删除节点5.遍历链......
  • 代码随想录算法训练营第五十四天| ● 392.判断子序列 ● 115.不同的子序列
    判断子序列 题目链接:392.判断子序列-力扣(LeetCode)思路:从子串s开始遍历,查找t中是否存在,因为全程不需要回溯,因此两个for循环就解决了。只是要注意return的时机。(只要不想写的很简洁,逻辑挺简单的其实)classSolution{public:boolisSubsequence(strings,stringt){......