- 博客(12)
- 收藏
- 关注
原创 代码随想录训练营打卡DAY 14 | 二叉树的DFS
递归遍历应该问题不大,迭代遍历感觉很悬,基本上是抄卡哥的代码写出来的。迭代法前序与后序写法一致,中序遍历不一样。也有三者风格一致的代码(未学)。
2024-02-06 15:14:05 179 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 1553 1
原创 代码随想录训练营打卡DAY 11 | 栈的应用
解释:例如,在 “abbaca” 中,我们可以删除 “bb” 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 “aaca”,其中又只有 “aa” 可以执行重复项删除操作,所以最后的字符串为 “ca”。给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。输入:tokens = [“4”,“13”,“5”,“/”,“+”]输入:tokens = [“2”,“1”,“+”,“3”,“*”]每个右括号都有一个对应的相同类型的左括号。
2024-02-05 17:55:49 321 1
原创 代码随想录训练营打卡DAY 8 | 反转字符串
给定一个字符串 s,它包含小写字母和数字字符,请编写一个函数,将字符串中的字母字符保持不变,而将每个数字字符替换为number。例如,对于输入字符串 “a1b2c3”,函数应该将其转换为 “anumberbnumbercnumber”。输入:[“H”,“a”,“n”,“n”,“a”,“h”]输出:[“h”,“a”,“n”,“n”,“a”,“H”]输入:[“h”,“e”,“l”,“l”,“o”]输出:[“o”,“l”,“l”,“e”,“h”]给定一个字符串,逐个翻转字符串中的每个单词。
2024-02-01 19:36:04 643 1
原创 代码随想录训练营打卡DAY 6 | 哈希表:数组+set+map
重点:哈希法的使用场景:要快速判断一个元素是否出现在集合里,或一个元素是否出现过。前者举例:求交集后者举例:两数之和。
2024-01-29 22:41:59 541
原创 代码随想录训练营打卡DAY 4 | 交换节点+删除节点+链表相交+环形链表
可以看出,节点相同的点至少要从短链的第一个节点开始。给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。时间复杂度:O(n),快慢指针相遇前,slow走的长度<n,快慢指针相遇后,从头节点到环的入口长度<n,故整体<2n。由于用pre和p指向了需要交换的节点,故在交换后,pre和p指向下一节点的过程的需要判空,即循环退出的条件。思路:用pre和p指向待交换的两个节点,为避免断链,需要保存prep的前驱,用prep保存。给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。
2024-01-28 14:14:51 1427 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 650 1
原创 代码随想录训练营打卡DAY 1 | 二分法+双指针
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。时间复杂度:O(log n)空间复杂度:O(1)时间复杂度:O(n)空间复杂度:O(1)时间复杂度:O(n)空间复杂度:O(1)
2024-01-24 22:15:05 426
原创 [704]二分查找
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。,另一种为左闭右开。笔者习惯前者,故采用第一种写法,即区间为 [left, right]。当满足上述条件时可以考虑使用二分法。使用二分法查找元素,需要数组满足。时间复杂度:O(log n)二分法有2种写法,一种为。空间复杂度:O(1)
2024-01-24 20:10:37 324
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人