- 博客(10)
- 收藏
- 关注
原创 142.环形链表
思路:快慢指针,快指针每次移动2个节点,慢指针每次移动1个节点,快慢指针的相对速度为1,因此,如果存在环,那么快指针会一个节点一个节点逼近慢指针,最终一定会相遇。可得x=(n-1)(y+z)+z,当n=1时,x=z,说明快慢指针在环形入口处相遇(有点不理解..)快指针走过的节点数:x+y+n(y+z) ,n为快指针在环内走了n圈才碰到慢指针。则x=n(y+z)-y,其中n>=1,因为快指针至少比慢指针要多走一圈。则 2(x+y) = x+y+n(y+z),得出x+y=n(y+z)给定一个链表的头节点。
2025-04-14 23:51:16
347
原创 904.水果成篮 力扣
对left指针进行移动,只需要先将fruits[left]--,即对该种类水果数量减一,然后再将left往右滑动。当fruit[left]==0时,将这个元素从cnt中删除即可。你正在探访一家农场,农场从左到右种植了一排果树。这些树用一个整数数组。如果从第一棵树开始采摘,则只能采摘 [0,1] 这两棵树。如果从第一棵树开始采摘,则只能采摘 [1,2] 这两棵树。可以采摘 [1,2,1,1,2] 这五棵树。可以采摘 [2,3,2,2] 这四棵树。可以采摘 [1,2,2] 这三棵树。,返回你可以收集的水果的。
2025-03-24 12:24:34
247
原创 34. 在排序数组中查找元素的第一个和最后一个位置
给你一个按照非递减顺序排列的整数数组nums,和一个目标值target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值target,返回[-1, -1]。你必须设计并实现时间复杂度为O(log n)的算法解决此问题。nums = [[3,4]nums = [[-1,-1][-1,-1]//情况三,例如[3,6,7],leftBorder=0,rightBorder=1,计算出二者相减为1,左右边界不符合要求。
2025-02-23 12:14:08
381
原创 59.螺旋矩阵
循环不变量:对每条边的处理规则不变,坚持左闭右开。所有元素,且元素按顺时针顺序螺旋排列的。n如果是奇数:最后填充的数组应该要单独复制。
2025-02-22 23:16:24
212
原创 209.长度最小的子数组
每个元素只被操作了两次,即i、j移动时各被操作了一次,时间复杂度为2*n,即O(n)一层循环控制起始位置,一层循环控制终止位置,最后判断最小的区间长度。j 指向滑动窗口的终止位置,i 指向滑动窗口的起始位置。不断调节子序列的起始位置和终止位置,以得到想要的结果。时间复杂度为O(n),为什么不是平方呢?如果不存在符合条件的子数组,返回。是该条件下的长度最小的子数组。找出该数组中满足其总和大于等于。问题在于:如何移动起始位置i?个正整数的数组和一个正整数。思路1:暴力求解,两层循环。该解法的时间复杂度为。
2025-02-22 15:59:13
196
原创 977.有序数组的平方
平方后,数组变为 [16,1,0,9,100]排序后,数组变为 [0,1,9,16,100]数组平方后,大小由两端向中间减少。组成的新数组,要求也按。
2025-02-22 10:15:05
224
原创 704.二分搜索法
1、左闭右闭 [left, right]2 不存在 nums中因此返回 -1。,如果目标值存在返回下标,否则返回。9 出现在nums中并且下标为 4。力扣704 二分查找。
2025-02-21 10:04:22
200
原创 贪心算法——钱币找零问题
假设1元、2元、5元、10元、20元、50元、100元的纸币分别有c0, c1, c2, c3, c4, c5, c6张。现在要用这些钱来支付K元,至少要用多少张纸币?贪心算法:每次尽可能取面值最大的纸币。
2024-07-02 09:16:32
429
1
原创 贪心算法——活动安排问题
问题描述:设n个活动的集合E={1,2,3,……,n},其中每个活动都要求使用同一资源,如演讲会场等,而在同一时间内只有一个活动能使用这一资源。每个活动i都有一个要求使用该资源的起始时间si和一个结束时间fi,si<fi。如果选择了活动i,则它在半开区间[si, fi ]内占用资源。若[si, fi ]与[sj, fj ]不相交,则活动i和活动j相容。活动安排问题就是要在所给的活动集合中选出最大的相容活动子集。
2024-07-02 08:30:58
840
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅