leetcode刷题
文章平均质量分 73
粉笔子小猪
这个作者很懒,什么都没留下…
展开
-
代码随想录训练营打卡DAY 14 | 二叉树的DFS
递归遍历应该问题不大,迭代遍历感觉很悬,基本上是抄卡哥的代码写出来的。迭代法前序与后序写法一致,中序遍历不一样。也有三者风格一致的代码(未学)。原创 2024-02-06 15:14:05 · 218 阅读 · 1 评论 -
代码随想录训练营打卡DAY 12 | 队列的应用
给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。,而这里可以维护一个大小为k的小根堆,遍历所有元素后最终留下k个频率最高的元素,而小根堆每次pop只需要。进阶:你所设计算法的时间复杂度 必须 优于 O(n log n) ,其中 n 是数组大小。时间复杂度:由于每个元素最多pop一次,push一次,故时间复杂度为。输入: nums = [1,1,1,2,2,3], k = 2。原创 2024-02-05 23:51:27 · 1594 阅读 · 1 评论 -
代码随想录训练营打卡DAY 10 | 栈与队列相互实现
注意:必须使用 2 个栈。原创 2024-02-05 18:14:08 · 490 阅读 · 1 评论 -
代码随想录训练营打卡DAY 11 | 栈的应用
解释:例如,在 “abbaca” 中,我们可以删除 “bb” 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 “aaca”,其中又只有 “aa” 可以执行重复项删除操作,所以最后的字符串为 “ca”。给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。输入:tokens = [“4”,“13”,“5”,“/”,“+”]输入:tokens = [“2”,“1”,“+”,“3”,“*”]每个右括号都有一个对应的相同类型的左括号。原创 2024-02-05 17:55:49 · 360 阅读 · 1 评论 -
代码随想录训练营打卡DAY 2 | 双指针+滑动窗口+螺旋矩阵
如果不存在符合条件的子数组,返回 0。既然循环区间大致知道如何了,接下来看看细节,每次循环结束后,由于i,j自增操作,指针会自动跳到下一个。4次循环结束(即遍历一圈)后,可以看到指针由于i–跑到了[0][0]位置,此时就需要将其移动到下一圈的开始,只要i++和j++即可。这里需要注意一个问题,当n为奇数时,会陷入死循环,设置一个if语句打破死循环,最后还需要将k=n*n赋值到相应位置(详见代码)。遍历完一圈后,k仍自增,需要填到[1][1]位置,经过上一步提及的i++和j++以后,指针和k值再次对应上。原创 2024-01-26 16:54:15 · 699 阅读 · 1 评论 -
[704]二分查找
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。,另一种为左闭右开。笔者习惯前者,故采用第一种写法,即区间为 [left, right]。当满足上述条件时可以考虑使用二分法。使用二分法查找元素,需要数组满足。时间复杂度:O(log n)二分法有2种写法,一种为。空间复杂度:O(1)原创 2024-01-24 20:10:37 · 333 阅读 · 0 评论