自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 最长连续序列

暴力循环每个元素,看从这个元素开始,最长能到多少,比如从第i个元素x开始,一直到x+y都有,那么最长的长度就是y+1。这种思路对每个循环的元素都要遍历一边数组,但遍历的目的只是找到有没有而已,所以可以直接用无序哈希表,查找速度很快,最终复杂度n2。同时简化操作,假如说判断出x到x+y是连续的,那么中间的所有数都可以直接跳过,包括x+y,也就是说,假如在判断x的时候,哈希表存在x-1这个数,那x就直接不判断了。个人思路:排序,然后。

2024-04-30 16:38:11 70

原创 梯度下降和反向转播

训练过程一般会先随机取一个点,还会设置一个学习率,代码中命名为lr,每次判断导数值之后,肯定要再取一个点,那么这个点就是以导数值乘以lr的结果作为步长迈出来的,也就是说,随着导数值下降,你的步长也会变小,这也是为什么收敛的速度会越来越慢的原因。损失函数这里用差的平方和,当然实际应用中会有不同的选择,训练要做的就是找到一组k,b,让损失函数的值最小。个人理解就是越前面的参数,和后面的参数关系就越大,有时候可能可能求出的偏导函数中会有靠近输出层的参数,所以要从输出层往输入层一层层优化,所以就是反向。

2024-03-23 22:18:23 135

原创 双指针专题

思路:经典题目,可以暴力但时间复杂度O(n**2),也可以一层枚举+二分查找,复杂度O(nlogn),最快双指针,可以充分利用数组非递减,一头一尾两个指针,计算和,小了左边的右移,大了右边的左移。为什么谁小谁移动可以得出解呢,因为如果小的固定,那么另外一个无论怎么移动,水都不会更多了,所以要移动小的,看看有没有大一点的,能抬高杯壁上限。思路:一层枚举+双指针,需要先排序,主要点在于判断边界条件,由于要求不能重复, 因此指针移动时要看看值是不是一样,一样需要跳过。5. 盛水最多的容器。

2024-03-19 22:21:55 210

原创 Z字形变换

个人思路:矩阵中每个元素肯定和下标有某种函数关系,参考题解(这题感觉怪怪的)

2024-03-18 21:32:57 324

原创 找出字符串中第一个匹配项

C:官方题解代码,按理说应该需要保存前缀函数值,但python这套运行逻辑放在C上就无法运行,蛮奇怪的。感觉写出来的代码怪怪的,虽然能通过,但是比题解少很多。个人思路:用KMP算法,从跳过每次匹配成功的部分。

2024-03-18 21:31:12 358

原创 反转字符串中的单词

个人思路:直接采用split,reversed,join函数就行,高级语言一般都有这种函数。不过也要学习一下常规的思路,双端队列插入,挨个找出字符串压入队列,在转换成字符串。

2024-03-17 21:56:53 341 1

原创 最长公共前缀

个人思路:既然是公共的,那就说明每个字符串里都有,因此每取一个字母,判断一下所有字符串里有没有就行,当然取得字母最好是最短字符串里面的。字符串语法不太熟悉,最终还是看了题解。这两天笔试,刷题时间少了。

2024-03-16 22:06:42 333 1

原创 最后一个单词的长度

个人思路:从后往前遍历,遇到空格有两种情况,一开始就有空格和遍历完一个单词了才有,因此判断一下有没有遇到过单词就行。

2024-03-14 21:25:56 310 1

原创 135.分发糖果

个人思路:原本想用滑动窗口,维持长度为3的窗口挨个判断,但代码没写出来,似乎这个思路不对,因此改用左右两次遍历,左遍历的时候维护一个数组,把0处元素置1,其余根据大小判断加还是也为1,然后再右遍历,可以再维护一个数组记录右遍历情况,最后挑左右数组里面大的数相加(也可以算出右的时候直接判断,会快很多)

2024-03-14 21:19:57 330 1

原创 42.接雨水

思路:看过英雄哥的解题思路,知道要用前缀和后缀最值,定义俩数组,数组每个元素代表到当前这个元素为止,往左或往右最大的值,判断能接多少水的时候忽略两头。

2024-03-13 21:43:20 345

原创 134.加油站

遇到困难:想判断的是最后的落点 j 能否循环到 i ,但是这样对于10**6长度的数组会超时,看了题解思路,想到应该判断走过的路程是否为gasSize。个人思路:能想到类似滑动窗口,对于每个元素i,判断最远能到哪里,如果中途汽油为负,则从负的这个点的下一个地方开始重新判断。

2024-03-12 23:11:51 311 1

原创 除以自身意外数组的乘积

个人思路:常规思路,两个数组,一个左乘积一个右乘积,求出每一个元素的左乘积和右乘积,求得时候可以用递归,然后遍历每个元素,把左右相乘(如果发现存在1个以上的0,直接返回全零)

2024-03-12 21:40:05 365 1

原创 274.H指数

个人思路:创建新数组统计每个引用次数的文献的数量,然后挨个判断每个数是不是h指数,会用到后缀和,方法原始,需要额外的数组空间。思路升级,查找的最大h数不可能超过文献数量,且可以从后往前找,找到的第一个就是结果。

2024-03-12 11:15:39 351 1

原创 45.跳跃游戏Ⅱ

个人思路:反向查找,但是python超时,参考跳跃游戏Ⅰ,每次在范围内查找能跳最远的index,其实就是在每次步长范围内查找index+nums[index]最大的那个。

2024-03-11 20:37:15 302 1

原创 55.跳跃游戏

对于每一个元素,在它能到达的最远的下标之内,判断其中的每个元素能不能到numsSize-1,同时更新最远距离i+nums[i]个人思路:一开始想用倒序,但是逻辑没想通,因此改用挨个判断。

2024-03-11 19:53:23 298 1

原创 买卖股票的最佳时机Ⅱ

个人思路:一开始理解错了,以为只能买卖两次。随后改用贪心算法,总结起来就一句话,遇到有得赚的就卖,有钱就拿了再说。卖了股票之后,记得把start改成卖出的日子,往后继续找有没有钱赚。

2024-03-11 15:20:16 327 1

原创 买卖股票的最佳时机

个人思路:对于price中每一个元素,只要后面存在比当前小的,那么卖出股票的时机就不可能当前元素,起码是后面那个更小的。因此额外定义一个卖出股票的下标索引,当找到更小的之后,更新卖出的下标。最大值采用持续更新策略,每次都计算一下取最大值。印象中C不是不可以用<=号的嘛,运行完才发现,大吃一惊。

2024-03-11 11:58:50 338 1

原创 189.轮转数组

个人思路:每个元素向后移k位,超出数组长度的用mod操作重新计数,需要额外的数组空间。额外思路:两次翻转,先翻转全部,再反转0到k-1和k-1到最后。python有自带翻转函数reversed。

2024-03-10 23:25:35 347 1

原创 169.多数元素

就这样各路军阀一直以这种以一敌一同归于尽的方式厮杀下去,直到少数阵营都死光,那么最后剩下的几个必然属于多数阵营,winner 就是多数阵营。(多数阵营 51个,少数阵营只有49个,死剩下的2个就是多数阵营的人。如果新来的士兵和前一个士兵是同一阵营,则集合起来占领高地,领主不变,winner 依然是当前这个士兵所属阵营,现存兵力 count++;当下一个士兵到来,发现前方阵营已经没有兵力,新士兵就成了领主,winner 变成这个士兵所属阵营的旗帜,现存兵力 count ++。常规个人思路:哈希表。

2024-03-10 18:15:06 317 1

原创 删除有序数组中的重复项Ⅱ

同Ⅰ,多加一个判断条件:前一个相等前两个不等,且不与i周围元素判断,而是与j元素判断,否则j处赋值之后会影响i处元素的判断。前两个元素必定保留,因此取j=1开始判断。由于要取j=1.因此提前判断numsSize。升级,其实只要判断nums[i]和nums[j-1]即可。

2024-03-10 17:31:46 333

原创 删除有序数组中的重复项

个人思路:双指针,i代表判断的元素,j代表已经判断过的,用于判断i是否与之前重复(可行原因在于数组不严格递增).,返回j+1是因为数组长度是下标+1,为什么从第二个元素开始判断,因为第一个元素必定会保留。

2024-03-10 16:48:01 298

原创 27.移除元素

可以改变元素顺序,因此可以一左一右,把右边不是val的替换左边是val的,例如val=1,nums=[1,2,3,4,5],可以直接变成5234。双指针,一个指针用于判断元素大小,还一个定义元素插入的位置。

2024-03-10 16:27:21 321

原创 合并两个有序数组

1. 个人思路,从i=m处开始添加nums2元素,添加到m+n停止,再对数组进行排序:时间复杂度较高,未使用两个数组已经排序的特点。nums1后面是空的,因此可以从后往前塞,从大到小塞,无需额外空间,时间复杂度O(m+n)思路:两个数组各一个指针,每次取出较小的放入队列,需要额外的数组空间。

2024-03-10 16:13:13 336

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除