自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

原创 代码随想录训练营打卡DAY 14 | 二叉树的DFS

递归遍历应该问题不大,迭代遍历感觉很悬,基本上是抄卡哥的代码写出来的。迭代法前序与后序写法一致,中序遍历不一样。也有三者风格一致的代码(未学)。

2024-02-06 15:14:05 154 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 1530 1

原创 代码随想录训练营打卡DAY 10 | 栈与队列相互实现

注意:必须使用 2 个栈。

2024-02-05 18:14:08 425 1

原创 代码随想录训练营打卡DAY 11 | 栈的应用

解释:例如,在 “abbaca” 中,我们可以删除 “bb” 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 “aaca”,其中又只有 “aa” 可以执行重复项删除操作,所以最后的字符串为 “ca”。给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。输入:tokens = [“4”,“13”,“5”,“/”,“+”]输入:tokens = [“2”,“1”,“+”,“3”,“*”]每个右括号都有一个对应的相同类型的左括号。

2024-02-05 17:55:49 302 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 618 1

原创 代码随想录训练营打卡DAY 7 | 哈希表+双指针

注意:与区分开。

2024-02-01 15:05:39 1029 1

原创 代码随想录训练营打卡DAY 6 | 哈希表:数组+set+map

重点:哈希法的使用场景:要快速判断一个元素是否出现在集合里,或一个元素是否出现过。前者举例:求交集后者举例:两数之和。

2024-01-29 22:41:59 516

原创 代码随想录训练营打卡DAY 4 | 交换节点+删除节点+链表相交+环形链表

可以看出,节点相同的点至少要从短链的第一个节点开始。给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。时间复杂度:O(n),快慢指针相遇前,slow走的长度<n,快慢指针相遇后,从头节点到环的入口长度<n,故整体<2n。由于用pre和p指向了需要交换的节点,故在交换后,pre和p指向下一节点的过程的需要判空,即循环退出的条件。思路:用pre和p指向待交换的两个节点,为避免断链,需要保存prep的前驱,用prep保存。给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。

2024-01-28 14:14:51 1407 1

原创 代码随想录训练营打卡DAY 3 | 反转链表

(即原链表的头节点)的next应当为空,笔者一开始没有改该指针,导致最后链表出现环,从而AC不了。

2024-01-28 13:14:28 183

原创 代码随想录训练营打卡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 625 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 401

原创 [704]二分查找

给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。,另一种为左闭右开。笔者习惯前者,故采用第一种写法,即区间为 [left, right]。当满足上述条件时可以考虑使用二分法。使用二分法查找元素,需要数组满足。时间复杂度:O(log n)二分法有2种写法,一种为。空间复杂度:O(1)

2024-01-24 20:10:37 322

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除