- 博客(16)
- 收藏
- 关注
原创 day25
创建一个数组用来存储每个数组对应的字符串,index代表递归的深度,for循环前先用数组下标减去0即可得到对应数组的字符串。与组合类似,终止条件多了相加之和的判断。
2023-11-08 23:20:06 83 1
原创 day21
双指针比较相邻两个节点的值是否相等,同时记录出现的频率和最大出现频率。中序遍历二叉搜索树,若count与macCount相等,向集合中插入当前节点的值,若count大于maxCount,清空集合,在向集合中插入当前的节点的值。利用二叉搜索树中序遍历后为一个递增的数组的特性,使用双指针比较当前节点和前一节点的值,找出最小的值即可。
2023-11-07 00:53:12 65
原创 day20
二叉搜索树中序遍历后为一个递增的数据,注意不能简单判断当前节点大于左节点、当前节点大于右节点。利用中序遍历,判断当前节点大于前一个节点。以root1为最终合并后的二叉树,前序遍历,root1节点为null返回root2节点,root2节点为null返回root1节点。遍历数组,找到数组中最大的元素及其下标,新建一个节点,val为当前数组范围最大元素。以数组最大元素下标为节点分割左右数组,递归遍历。利用二叉搜索树特性,若val大于root节点值则向右搜索,反之向左搜索。
2023-11-06 16:50:40 54
原创 day17
判断递归函数的参数root和返回结果int,确定递归的终止条件root == null,最后确定单次递归的逻辑。后序遍历,判断一个二叉树是否为高度平衡的二叉树即左子树和右子树的高度差不能大过一。注意什么是左叶子:节点的左孩子不为空,且节点左孩子的左孩子和右孩子都为空。用到回溯的思想,回溯和递归是一一对应的!
2023-10-30 17:21:54 40 1
原创 day13
使用单调队列,堆头元素为当前窗口内最大的元素,当遍历数组时比较当前元素与堆头元素的大小,若大,则移除队内元素,若小,先判断窗口内元素是否是窗口最大值,若不是则直接加入队列,若是则pop堆头元素再加入当前元素。使用小顶堆,小顶堆的大小设置为k,遍历数组,若当前元素大于堆头元素则弹出堆头元素,最后堆内元素即位结果。
2023-10-25 17:01:41 42 1
原创 day11
题目给定波兰表达式,不用判断不符合的情况。遍历字符串数组,判断当前节点是否为算符,不为算符将当前元素放入栈中,若为算符,对当前栈中元素pop两次,并计算,最后将计算结果放入栈中,最后结果即为值。遍历字符串s,如果栈为空或当前字符与栈顶元素不匹配,则将当前元素放入栈中,最后字符倒序相加转为字符串。题目说左括号必须以正确的顺序闭合,为简便操作,统一在栈中放入右括号。
2023-10-23 19:10:11 36
原创 day07
若nums[i]+nums[left]+nums[right] > 0 right--,若nums[i]+nums[left]+nums[right] < 0 left--。定义一个map,用来存储nums1和nums2相加的结果,相加之和做key,出现的次数做value。遍历nums3和nums4并相加,判断map中是否存在相加结果为0的key,若存在,取对应的value并相加。然后遍历字符串ransomNote,在对应的字符位做自减操作,最后遍历数组,若数组中出现负数返回false,否则返回true。
2023-10-18 18:57:58 53 1
原创 day06
使用两个hashset,第一个hashset用来存储nums1的所有元素,然后遍历nums2,同时判断nums2中的元素是否出现在第一个hashset,若出现,则说明当前元素时两个数组的交集,将其放入另一个hashset。新建一个hashmap,遍历数组,若map中不存在键为target-nums[i]的元素则将当前数组的值和下标放入map(数组的值做key的原因是简化操作)。字符串s和t都只包含小写字母,新建一个数组来存储s中每个字符出现的次数,然后遍历t,对应位置上的字符自减。
2023-10-17 17:39:51 33
原创 代码随想录day02|977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II
双指针法,数组有序且没限制数组元素的大小,因此数组元素平方后最大元素一定在数组两侧。要求目标数组按照递增顺序排序,因此比较原数组最外侧的两个元素的大小,将计算后大的值倒序填充到目标数组同时下标向数组中间靠拢。窗口内代表的是满足条件的数组,当窗口内的值大于目标值需要减小窗口长度,起始位置向右移动;当窗口内的值小于目标值,需要增大窗口长度,结束位置向右移动。采用滑动窗口的思想,即不断的调节子区间的起始位置和结束位置,从而找到目标结果。滑动窗口用一次for遍历,遍历的索引是滑动窗口的结束位置!
2023-10-12 20:32:08 195
原创 代码随想录算法训练营第一天|704. 二分查找,27. 移除元素
为什么当target在右区间时left = middle + 1?无论区间是左闭右闭还是左闭右开,当target在右区间时,nums[middle]一定不是target,都是左闭区间所以结束下标范围为middle + 1;左闭右闭且当target在左区间时,right = middle - 1,此时nums[middle]一定不是target,又因为是左闭右闭区间所以结束下标范围为middle - 1。左闭右闭时left == right 有意义,所以需要用
2023-10-11 19:57:34 211
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人