算法
文章平均质量分 54
刷题,算法
自律即自由w
大二再读,C++ | Golang
展开
-
用优先队列来找出二叉树的众数
此题目来自lc给你一个含重复值的二叉搜索树(BST)的根节点root,找出并返回 BST 中的所有(即,出现频率最高的元素)。如果树中有不止一个众数,可以按返回。原创 2024-04-21 16:45:56 · 263 阅读 · 0 评论 -
回溯算法开始
再来看一下参数,因为回溯算法需要的参数可不像二叉树递归的时候那么容易一次性确定下来,所以一般是先写逻辑,然后需要什么参数,就填什么参数。什么时候达到了终止条件,树中就可以看出,一般来说搜到叶子节点了,也就找到了满足条件的一条答案,把这个答案存放起来,并结束本层递归。在上面我们提到了,回溯法一般是在集合中递归搜索,集合的大小构成了树的宽度,递归的深度构成的树的深度。但后面的回溯题目的讲解中,为了方便大家理解,我在一开始就帮大家把参数确定下来。的时候,就知道遍历树形结构一定要有终止条件。原创 2024-04-04 16:10:40 · 243 阅读 · 0 评论 -
leetcode 重复的子字符串
步骤一:因为 这是相等的前缀和后缀,t[0] 与 k[0]相同, t[1] 与 k[1]相同,所以 s[0] 一定和 s[2]相同,s[1] 一定和 s[3]相同,即:,s[0]s[1]与s[2]s[3]相同。步骤三: 因为 这是相等的前缀和后缀,t[2] 与 k[2]相同 ,t[3]与k[3] 相同,所以,s[2]一定和s[4]相同,s[3]一定和s[5]相同,即:s[2]s[3] 与 s[4]s[5]相同。后两个分别是前后缀,第一个是总的字符串,然后可以推导。原创 2024-02-28 22:17:33 · 566 阅读 · 0 评论 -
终于明白kmp算法
在刷代码随想录的时候,遇到了leetcode这道经典题目。原创 2024-02-27 17:33:12 · 487 阅读 · 0 评论 -
反转字符串 -代码随想录
其实在遍历字符串的过程中,只要让 i += (2 * k),i 每次移动 2 * k 就可以了,然后判断是否需要有反转的区间。给定一个字符串 s 和一个整数 k,从字符串开头算起, 每计数至 2k 个字符,就反转这 2k 个字符中的前 k 个字符。一些同学可能为了处理逻辑:每隔2k个字符的前k的字符,写了一堆逻辑代码或者再搞一个计数器,来统计2k,再统计前k个字符。如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。输入: s = "abcdefg", k = 2。原创 2024-02-23 16:16:04 · 330 阅读 · 0 评论 -
滑动窗口思想
滑动窗口算法是一种通过定义窗口在数据结构上的滑动,以解决问题的方法。通常,窗口由两个指针表示,一个用于维护窗口的起始位置,另一个用于维护窗口的结束位置。算法的核心思想是在遍历过程中,通过移动这两个指针,调整窗口的大小和位置,以满足特定的条件。原创 2024-02-01 22:09:06 · 445 阅读 · 0 评论 -
结束 代码随想录 链表章节(下一张
只要 相对速度为1 那么快指针绝对会在环里追上慢指针,最后x 和z 的距离其实最后两个index总会相遇,相遇的点就是入口。首先,先判断有没有环,像物理相对速度一样。原创 2024-02-13 17:47:01 · 376 阅读 · 0 评论 -
螺旋矩阵 leetcode54.
【代码】螺旋矩阵 leetcode54.原创 2024-02-05 16:27:05 · 394 阅读 · 0 评论 -
反转链表· 递归
【代码】反转链表· 递归。原创 2024-02-06 20:41:38 · 574 阅读 · 0 评论 -
哈希表 ?
总结一下,当我们遇到了要快速判断一个元素是否出现集合里的时候,就要考虑哈希法。但是哈希法也是牺牲了空间换取了时间,因为我们要使用额外的数组,set或者是map来存放数据,才能实现快速的查找。需要判断一个元素是否出现过的场景应该第一时间想到哈希法!原创 2024-02-14 15:23:43 · 952 阅读 · 0 评论 -
unordered_map 关联容器
今天在做滑动窗口的题的时候,发现都用了这个unordered_map,下面我总结了相关知识点。是 C++ 中的一种关联容器,用于存储键-值对,其中键是唯一的。可以对键对应的值进行递增。如果键不存在,会被创建并初始化为0。,如果键不存在,会创建一个具有默认值的元素。//这里尤其注意,map[]里面的key 并。,如果键不存在,将会被创建。时间复杂度为 O(1)。原创 2024-02-02 15:15:36 · 554 阅读 · 0 评论