- 博客(12)
- 收藏
- 关注
原创 0基础力扣 DAY12
思路:暴力解:遍历数组时,循环遍历窗口内元素,返回最大值即可,时间复杂度为o(n*k)。要想降低时间复杂度,则需要额外设置一个数据结构,用以维护当前窗口的最大值。即设置一个单调递减队列,进行如下操作:将初始窗口内元素依次插入队列,若当前元素大于等于队头元素,则将队头出队,继续查找,直到队列中元素全部大于当前元素,将该元素插入队尾;此时队头元素即为当前窗口最大值。移动窗口,将不在窗口中的元素出队,并将新元素按上述方式入队,则可继续得到当前窗口最大值。重复上述过程,直到遍历完整个数组,返回每个窗口最大值。
2024-05-02 23:51:37
135
原创 0基础力扣 DAY11
思路:设置一个栈,将扩号字符串插入栈中,若当前字符为左括号,则直接入栈,若为右括号,则查找栈顶元素,判断是否为匹配的左括号,若栈为空,则返回false,若不匹配则返回false,匹配则将栈顶元素弹出,指针后移,继续判断后续括号是否符合。
2024-04-29 10:58:37
342
原创 0基础力扣 DAY10
在C++中,栈和队列并不属于容器,属于容器适配器。其底层采用可插拔的容器实现(数组、链表、受限的双端队列)。我们所使用的stack以及queue是属于SGI版本的STL,被Linux的GCC编译器所采用,开源且源码可读性高。在SGI中,默认使用deque作为底层容器实现stack和queuestack和queue并不会提供走访功能,也不会提供迭代器,无法使用迭代器遍历元素。
2024-04-26 22:29:43
355
3
原创 0基础力扣 DAY9
在我看来,对于字符串的操作,绝大多数可以视作对于字符数组的操作,处理的逻辑本质上和处理int型数组是一致的。另需要掌握KMP算法,求next数组,以及对于next数组的优化。
2024-04-25 23:28:13
140
4
原创 0基础力扣 DAY7
思路:假设取nums1、nums2、nums3、nums4元素分别为a、b、c、d,可将题解划分为(a+b)+(c+d)=0,转为查找两个数组中,符合元素相加为0的解的个数,即可将暴力解4重for循环变为两个2重for循环。由于题设要求计算解的个数,因此需要用使用map作为哈希表,用value值存储key为x的解的个数。
2024-04-23 21:42:06
295
原创 0基础力扣 DAY6
遍历数组时,使用哈希表存储已经遍历过的数组元素,若哈希表中存在与当前元素和为target的元素,则返回二者下标,否则将当前元素以及下标存入哈希表。思路:由于替换平方和的过程是无限循环的,因此判断是否是快乐数,只需看每次得到的和是否重复出现即可,如果和重复出现,则一定会无限循环下去, 此时该数则不是快乐数;遍历字符串a,将a中各字母出现次数存入数组,再遍历b,b中出现的字母在数组中减去,最后检查数组,若各个位置均为0,则两字符串为字母异位词,否则不是。 map中,若iter为map的一个元素,则。
2024-04-22 21:40:29
368
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人