- 博客(5)
- 收藏
- 关注
原创 力扣(82—删除排序链表中的重复元素二,283—移动零)
用三个指针,prev指向虚拟头节点, cur指向头节点, next指向头节点后一位。当next为空时直接返回虚拟头节点及头节点,当cur.val!= next.val时,让指针都向后移一位,当循环走完,next指向第一个不重复节点时,将cur指向该节点,再继续至走完为止。先遍历一遍将数值非零的元素移到数组前面,再将数组后面的元素补为零。请注意 ,必须在不复制数组的情况下原地对数组进行操作。删除原始链表中所有重复数字的节点,只留下不同的数字。移动到数组的末尾,同时保持非零元素的相对顺序。
2023-12-03 00:02:43 82 1
原创 力扣(14—最长公共前缀,112—路径总和)
若当前节点就是叶子节点,则判断sum是否等于val即可,若当前节点不是叶子节点,则只需要递归的询问它的子节点是否能满足条件即可。纵向比较相同列上的字符是否相同,如果相同则继续比较,不同则截取前面相同的部分并返回。叶子节点的路径,这条路径上所有节点值相加等于目标和。不存在 sum = 5 的根节点到叶子节点的路径。由于树是空的,所以不存在根节点到叶子节点的路径。等于目标和的根节点到叶节点路径如上图所示。叶子节点是指没有子节点的节点。(1 --> 2): 和为 3。(1 --> 3): 和为 4。
2023-11-25 22:27:04 72
原创 力扣(155—最小栈,剑指offer22—链表中倒数第k个节点)
为避免时间复杂度过大,除了普通栈stack外,多准备一个辅助栈minstack,辅助栈用来保存当前栈内最小元素,在此基础上进行入栈和出栈操作。让p1指针先指向头节点,p2指针指向头节点后第cnt个节点,将两指针同时后移,直至p2指向空时,p1指针指向的就是所求节点。--> 返回 -3.minStack.getMin();--> 返回 -2.minStack.top();时间复杂度:O(n)空间复杂度:O(1)时间复杂度:O(1)空间复杂度:O(n)
2023-11-17 09:01:08 65 1
原创 力扣(94—二叉树的中序遍历,232—用栈实现队列)
设置两个栈实现一个队列,第一个栈只用来入队列,第二个栈只用来出队列,先将x全部放到第一个栈中,每次都出第二个栈,如果第二个栈为空,那么把第一个栈全倒入第二个栈中。(1)递归法:按照左根右的顺序遍历,创建存放动态数组的表arraylist,将遍历后的结果依次添加到顺序表ret中,最后返回ret即可。(2)迭代法:借助指针的遍历来帮助访问节点,用栈来处理节点上的元素。时间复杂度:O(n)空间复杂度:O(n)时间复杂度:O(n)空间复杂度:O(n)时间复杂度:O(1)空间复杂度:O(n)给定一个二叉树的根节点。
2023-11-12 00:08:05 163
原创 力扣(69—X的平方根,169—多数元素)
给你一个非负整数x,计算并返回x的算术平方根。由于返回类型是整数,结果只保留整数部分,小数部分将被舍去注意不允许使用任何内置指数函数和算符,例如或者x ** 0.5。x = 42x = 828 的算术平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。二分法:将查找范围限制在0~X,比较中间值mid的平方与X的大小关系,采用除法防止溢出,最后通过改变范围来确定返回值,采用除法则不需要再考虑返回值+1。时间复杂度:O(logx)空间复杂度:O(1)
2023-11-05 00:26:51 82
空空如也
C语言最少费用购物问题
2024-05-11
TA创建的收藏夹 TA关注的收藏夹
TA关注的人