- 博客(26)
- 收藏
- 关注
原创 Leetcode热题100 Day3
思路二:考虑空间复杂度,需要把数组排序的那一套用在链表中。思路一:不考虑空间复杂度的话,直接把链表转成数组,然后对数组进行排序,再构造一个新的链表。思路三:遍历第一个,所有遍历过的点做好标记,然后再遍历第二个,看是否遍历到有做标记的点。思路一:可以先遍历两个链表,找到长度差,然后长的先遍历这个差值,再二者同时遍历。思路二:用哈希集合遍历第一个链表,然后遍历第二个链表,看是否出现在哈希集合。思路一:迭代,此时两个指针分别指向两个链表,不断比较大小。思路二:可以把链表的后半段逆转,然后和前半段进行比较。
2024-07-20 20:39:57 457 1
原创 Leetcode热题100 Day2
但是即使这样我在写的时候还是花了很多时间,一个是边界条件的处理(尤其是连续有相同值的处理)以及我发现了leetcode的编译器和本地的编译器不一样:本地没有进行越界检查,但是leetcode是开启了的。首先需要对原先的区间进行排序,排序的原则是先按照左端从小到大,左端相同则看右端。这样的话,用两个指针表示当前的已合并区间的左端和右端,不断判断这个右端是否大于下一个区间的左端,如果大于,则合并。窗口的特性是窗口内所有字母的出现次数,因为是异位值,所以只要出现次数相同即可,并不需要考虑出现的顺序。
2024-07-19 18:34:12 264
原创 Leetcode热题100 Day1
我一开始的想法是往左找+往右找,然后加起来,但是这样其实并不是o(n)的。我第一瞬间的想法是构造哈希表,然后对每个词,比如eat,分别用他的异位词进行查找。但是这样有一个问题,一个是异位词怎么全部表示出来,还有一个是可能同一个异位词有多个,但是查找只能找到其中一个(这个可以通过多次查找解决,每次找到一个就用erase删除这个元素)。看了题解发现,我们可以对key-value中的key做手脚,不用词本身作为key,而是用异位词的共性作为key,比如排序后的词,或者计数后的词。否则不换,只有右加1。
2024-07-11 17:17:45 335
原创 mysql出现Error Code: 2014 Commands out of sync; you can‘t run this command now
后来发现解决方法:把“DROP FUNCTION IF EXISTS GPA;”最后的分号改成"//"
2024-05-20 22:27:29 282 1
原创 moveit! 与 gazebo 仿真时出现:Unable to identify any set of controllers that can actuate the specified...
从网上找到一堆文章,用了很多方法都没有解决。最后发现是控制器没有下载!
2024-04-10 17:05:51 227
原创 win和linux双系统之linux无法连接外接显示器
最后找到解决方法——开机时进入bios,选择独显直连。(具体怎么操作因不同品牌的电脑而异,请自行搜索)从网上找到的解决方法基本都是说没有安装显卡驱动,但是我是安装了的。时能正确识别外接显示器,但是外接显示器就是不亮。
2024-04-09 10:18:37 975
原创 Ubuntu 20.04配置ROS Noetic无法添加密钥
出现:gpg: keyserver receive failed: Connection timed out。出现:gpg: keyserver receive failed: End of file。这说明防火墙阻断了port80。可以直接把":80"去掉。
2024-03-30 13:49:21 799 1
原创 每日一题(17)Leetcode 125/392/167
我这个算法的时间复杂度为O(n^2)。虽然我引入了一个j_flag,但是并没有把时间复杂度降低一个量级。这一题虽然是easy题,但我做的并不好。主要是边界条件一直没有理顺,一直出错,慢慢debug才发现自己的错误。while里套while就引入了更多的边界条件,容易出错。不如只套if,善于利用continue。总和小于目标,左边移;总和大于目标,右边移。时间复杂度为O(n)。今天做的两道题都是有关two pointers的。这一题也是个easy题,直接秒杀,没什么可说的。
2024-03-28 10:04:45 305 1
原创 每日一题(16)Leetcode 6/28/68
这道题是Hard题,但是正像评论所说的,这一道题顶多算难一点的Medium题,因为这道题本身并没有考察任何算法,唯一的难点就是边界条件的确定。这一题我花了一两个小时才de完所有的bug,就是因为自己的边界条件不是这错就是那错。我觉得我写的过程中在边界条件上浪费了太多的时间了。但是我看到了另一个方法,虽然不能说性能上有什么提升,但是感觉思路更加清晰。今天其实只做了两道题,28题是用KMP算法,懒得看了,等后续什么时候想看再看吧…这个“reachedEdge”感觉很妙,通过是否到达边界,来改变行数的加减。
2024-03-26 20:56:19 276
原创 每日一题(15)Leetcode 58/14/151
其实直接从尾部开始遍历更快,找从尾部开始的第一个单词即可。下面有一题就是从尾部开始遍历的。今天做了两个easy,一个medium,都比较简单。搜了一下,并没有什么时间复杂度更低的算法…two pointers的思想。
2024-03-25 15:55:47 184 1
原创 每日一题(14)Leetcode 135/42/13
如果是平的,根据规则,可以比前者少,那直接贪心,就给它设置成1,所以直加1。比如连续的是3,2,1:遇到2的时候,3是1,这时需要把3加1,即3是2,2是1;遇到1的时候,需要把2加1,此时3又要加1,所以总共加2。首先,如果出现height[lpos] >= lmax或者height[rpos] >= rmax,这说明这个位置必定存不住水,直接跳过并更新最大值即可。一开始我为了避免比如8=IIX的情况出现,还从后往前算,但后来发现根本没有IIX这种,只有IX这种,所以从前往后算也行。
2024-03-24 16:25:53 306 1
原创 每日一题(13)Leetcode 380/238/134
这个问题的关键在于:如果从index=0开始,只能走到index=i,那么说明从index=0~index=i之间的任何一个地方出发,都到不了index=i+1,所以乖乖从index=i+1再次出发即可。计算数组除了该元素本身之外的所有元素的乘积方法就是这个值等于该元素左边所有元素的乘积乘上该元素右边所有元素的乘积。因为发现每日只做一题速度着实有点太慢了,所以我打算把每日一题增加到每日三题,但标题还叫作“每日一题”。注:写的过程就已经参考hint了,所以没有把别人的代码放出来,大差不差。
2024-03-23 16:19:35 790
原创 每日一题(10)Leetcode 45. Jump Game II
后来经过chatgpt的提醒,改为用一维数组dp[i],表示从index=0到index=i所需的最小跳数。最后返回dp[n-1]。for循环得到每个点所能达到的最远点,这个最远点可能不是从这个点出发跳到的(可能是由这个点之前的点出发跳到的)。一开始是想用二维数组dp[i][j],表示从i到j的最少跳数。但是这样的话时间复杂度是O(n^3),超时了。while循环类似于贪心,每一次都选跳到的最远的点,直到跳到末尾为止。时间复杂度为O(n^2).
2024-03-21 11:08:03 294 1
原创 每日一题(9)Leetcode55. Jump Game
tag里面有greedy,我也没看懂怎么个greedy法。看了别人的solution,感觉都算不上是贪心,基本上也是遍历一遍数组。简单的遍历一遍数组。时间复杂度为O(n)没有什么纠结的意义了。
2024-03-19 10:57:45 192 1
原创 每日一题(8)Leetcode 122. Best Time to Buy and Sell Stock II
一开始没仔细看题目,没看懂II跟I的区别。后来发现是每天都要进行买/卖的操作。我们想买遍整个价格上升段,下降段全都避开。因此可以采用贪心算法。时间复杂度为O(n)。
2024-03-18 10:59:42 224
原创 每日一题(7)121. Best Time to Buy and Sell Stock
仔细想想为什么需要保留min_price?:很容易可以知道,如果能得到最大利润,那么肯定是在抛售那一天之前的最低价格的那一天买入的。我的方法很丑陋,时间复杂度是O(n^2),就不放出来了。时间复杂度为O(n)。
2024-03-17 16:49:26 219 1
原创 每日一题(6)Leetcode189. Rotate Array
利用reverse函数。这个方法的缺点是不太容易想到,有点巧妙。但其实本质上并不快多少,感觉没什么太大意义。
2024-03-16 13:59:11 629 1
原创 每日一题(5)Leetcode169. Majority Element
这个算法的思想比较巧妙:如果一个数能占到一半以上,那么它最后出现的次数能够保持正数,即使减去其他的元素出现的次数。分析:vector的sort是O(nlogn),已经很大了,我又搞了个O(n)的判定,加起来可能超过了时间限制。虽然也是排序,但是这种方法直接返回排序后的序列的中间值,这个中间值必定是最大的。测试样例能过,但是submit时会提示run time error。空间复杂度稍高一点,但是时间复杂度为O(n)
2024-03-16 13:30:30 335 1
原创 每日一题(4)Leetcode88. Remove Duplicates from Sorted Array II
Leetcode80我的方法:class Solution {public: int removeDuplicates(vector<int>& nums) { int times = 1; int i = 1; int k = 1; while(i<nums.size()){ if(nums[i]==nums[i-1]){ if(times==1
2024-03-14 16:51:24 242 1
原创 每日一题(3)Leetcode26. Remove Duplicates from Sorted Array
不是最好,感觉主要是没必要引入这个flag。可以直接把每个值都跟它前面的值进行比较,如果相同则舍弃,如果不同则保留。
2024-03-13 14:13:26 147
原创 每日一题(2)leetcode27.Remove Element
我认为这很怪,因为引入了O(n)后时间复杂度应该挺高的,为什么还能beat100%?如果有读者能看到这篇文章并且知道原因的话希望能告诉我。性能:Beats 100.00% of users with C++更好的解法:2 pointers。这个方法毫无疑问是O(n)的。
2024-03-12 11:12:06 214
原创 每日一题(1)leetcode88.Merge Sorted Array
这个方法的思想是直接把num2给merge到num1,最妙的是如果在while结束前有num1中的还没遇到,则说明这些数在merge后的数组里就是这个位置!问题分析:感觉是最后一个for循环太占时间了,而且用一个新的数组存有些没必要。时间上:Beats 7.97% of users with C++
2024-03-12 10:58:26 186 1
原创 vscode通过ssh远程连接虚拟机失败
今天vscode突然连不上虚拟机了,分明昨天还好好的。试了网上的各种方法,依旧是没有用。后来发现是硬盘满了。发现硬盘有多余的空间了。
2023-11-02 22:29:58 419
原创 VScode git push报错 Missing or invalid credentials
从网上找到的方法基本上都是找到git.terminalAuthentication 去掉√,然后重启。后来我发现在git push前加上sudo即可。然而这并没有解决我的问题。
2023-10-20 22:03:27 429 3
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人