- 博客(20)
- 收藏
- 关注
原创 leetcode第21天删除链表第n个节点
这个题最简单的办法就是先遍历一边,求得长度,这样第二遍就可以去到要删去的节点了。最方便的办法是用栈,先装进去,按顺序取出即可。这里在head前面接一个空节点会比较好操作。
2021-11-10 23:39:58 287 1
原创 Leetcode第12,13天正则表达式
写了两天,结果感人class Solution {public:bool isMatch(string s, string p) {bool ans=false;int temp=0;for(int i=0; i<=s.size(); i++) {if(is.size()&&tempp.size()) return true;else if(temp>=p.size()) return false;if(p[temp+1]’*’&&temp..
2021-10-11 20:35:31 119
原创 Leetcode第11天二分查找优化
写代码的思维还是没有培养起来,看到题自己写的还是笨笨的,亟需改进。二分查找可以显著降低时间复杂度,但是我没有想到,还是不够敏感将其转化为查找问题。
2021-10-10 00:54:02 75
原创 leetcode第10天双指针优化
我看到这个确实没什么头绪,只想全遍历,但是看了看最后的范围提示,必定运行超时了,所以还是借助了答案。在一开始,我们把两个指针放在头尾。需要明白一件事,就是指针如何移动。我们需要移动键值更小的那个指针。假设我们移动了键值较大的那个指针,如果下一个位置的键值变大了,那么就面积来看,高不变,宽减小,面积减小;如果下一个位置的键值变小了,那么就面积来看,高变小,宽减小,面积减小。...
2021-10-09 00:16:02 55
原创 leetcode第九天回文数
#include<cmath>classSolution{public:boolisPalindrome(intx){if(x<0)returnfalse;inttemp=x,power=0;intleft,right;while(temp>9){temp=temp/10;power++;...
2021-10-07 19:20:36 75
原创 leetcode第六天z字形变
没有什么难度,看得懂题意就很容易做。这是四行的例子画出的图,这个弄明白了就可以开始码了。可以2n-2看作一个循环,取余数即可,再把相加为2n的合并就好了。
2021-10-04 19:57:40 156
原创 leetcode第五天最长回文子串
首先,这个题比较容易想到的解法就是便利字符串,把每个字符都当作回文串的中心向两边拓展。(需要注意奇偶)我比较关注的是官方给出的另外两种算法。动态规划:本质上是维护一个状态转移矩阵,满足的条件:单字符是回文串,两个相同字符的字符串也是回文串,一个回文串左右两个字符相同的话,合并起来也是回文串。这样我们就可以计算得出这样一个上三角的状态转移矩阵。这个算法和上一种的算法时间复杂度是一样的o(n2),空间复杂度更高也是o...
2021-10-03 21:17:16 62
原创 leetcode第四天寻找两个有序数组的中位数
第一眼看到这个题,首先想到的就是中位数那就挨个找呗。虽然时间复杂度是o((m+n)/2),但我们先把最简单的写出来。当我们要考虑题目最后的要求:时间复杂度为o(log(m+n))。我的想法首先就是二分的思想。...
2021-10-03 01:02:56 64
原创 leetcode第三天最长无重复子串
我们很容易想到最简单的办法就是挨个字符作为子串的头寻找最长子串。如下:这样的时间复杂度是o(n2),双重循环。我们还可以通过头尾指针来寻找最长子串,通过维护一个记录数组避免了嵌套的循环。还有一点要注意的是,如果用c来写,要记得强制转换(我也是好久没写c,才去复习才想起来的>_<)...
2021-10-01 20:42:14 35
原创 Leetcode第一天(两数之和)
非计算机转业学生打算进入互联网行业(有一定基础),计划从今天开始刷leetcode,因此想在csdn写日记用以激励自己,同时也可以与很多好兄弟们交流。 第一眼看到这个题目,最先返回到脑子里的想法就是双层循环暴力出结果即可。 接下来要优化算法的时间复杂度,首先可以想到的是排序,然后从两边头尾指针往中间搜索这里搜索的复杂度是o(n),时间复杂度主要出在sort上,为o(nlogn)。最后,时间复杂...
2021-09-29 16:46:08 46
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人