自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 图解算法数据结构—习题记录 | 数学

(突破口:升序数组)i在数组首端,j在数组末端,把它们的和与target作比较,比target大时,j--,比target小时,i++,循环直到两指针相遇。(hard难度的题,第一次真的很难做出来,这个视频讲的非常好!但听完最好自己动笔推算一遍)主要是推算公式,根据当前所求数位所在的数字分三种情况:=0、=1、>1。(约瑟夫环,但没看懂。

2025-03-13 17:19:41 416

原创 图解算法数据结构—习题记录 | 位运算

(分治法专题的也用到该知识点)

2025-03-11 21:38:03 427

原创 图解算法数据结构—习题记录 | 贪心

贪心的本质是选择每一阶段的局部最优,从而达到全局最优。

2025-03-10 17:51:18 715

原创 图解算法数据结构—习题记录 | 动态规划

状态转移方程 dp[i] = dp[i - 1] + dp[i - 2];

2025-03-07 19:42:37 1129

原创 图解算法数据结构—习题记录 | 分治

左子树中所有节点的值 < 根节点的值;右子树中所有节点的值 > 根节点的值;可以通过递归判断所有子树的正确性(即其后序遍历是否满足二叉搜索树的定义)。并阶段本质上是 合并两个排序数组 的过程,而每当遇到 左子数组当前元素 > 右子数组当前元素时,意味着「左子数组当前元素 至 末尾元素」与「右子数组当前元素」 构成了若干「逆序对」。分治的思想:规模较大的问题分解成较小的问题,较小的问题再分解成更小的问题,直到容易解决为止。(这个网站看解题思路部分就好,步骤实际就是归并排序,但是这里面写的有点复杂了)

2025-03-05 00:55:17 811

原创 图解算法数据结构—习题记录 | 回溯

(与LCR 129有异曲同工之妙,有一点不同的是LCR 129上一轮检查过的元素本轮还需要再检查,而本题检查过的元素无需再检查,因此元素的左侧和上侧不需要再进行DFS)if(A || B) // 若 A 为 true ,则 B 的判断不会执行(即短路),直接判定 A || B 为 true。常见的逻辑运算符有三种,即 “与 && ”,“或 ∣∣ ”,“非!综上,时间复杂度为 ​O(N + EPL),最坏情况下为 ​O(N²),平衡树为 ​O(N logN)。(使用ACM的输入输出方式)

2025-03-03 18:33:26 1083

原创 图解算法数据结构—习题记录 | 查找

思路:使用字典记录字符出现的次数,再返回出现次数为1的字符。(注意:检查次数为1的字符时,必须按照原字符串中的字符顺序在字典中查找,而不能直接遍历字典查找,因为字典在C#中的遍历顺序是不确定的,而本题要求“返回第一个只出现一次的”)O(1)(由于题目指出 arr 只包含小写字母,因此最多有 26 个不同字符,HashMap 存储需占用 O(26)=O(1) 的额外空间。

2025-02-28 20:00:08 604

原创 图解算法数据结构—习题记录 | 树

是一种。

2025-02-27 18:10:56 853

原创 图解算法数据结构—习题记录 | 栈与队列

将putIn中的数依次放入栈中,每放入一个数就检查当前栈顶数是否等于当前所要拿取的数,直到两者不相等则跳出内部循环,直到putIn中的数都已放入栈中则跳出外部循环,最后当栈中没有数则表明拿取顺序合法,返回true。为大顶堆和小顶堆,它们能够在O(log n)的时间内插入元素,并在O(1)的时间内访问堆顶元素。如果能将数据分成两部分,一部分用大顶堆保存较小的半数元素,另一部分用小顶堆保存较大的半数元素,那么中位数就可以通过这两个堆的堆顶元素来快速计算。通过栈直接模拟入栈和出栈的过程,确保出栈顺序的合法性)。

2025-02-25 01:52:40 1139

原创 图解算法数据结构—习题记录 | 字符串

看解题思路前:创建一个栈和临时字符串tmp,遍历字符串,依次将字符存入tmp中,若遇到空格,则将tmp压入栈中后清空,遍历结束后,将栈中的字符串弹出并拼接。 复杂度分析:看解题思路后:使用双指针。倒序遍历字符串,记录单词左右索引边界 i , j ;每确定一个单词的边界,则将其加入到单词列表res;最终将单词列表res拼接为字符串。初始化:搜索到首个空格:直到索引 i 越界,退出循环。 注意点:在C#中,字符串.Substring(int startIndex, int length)复杂度分析:本题

2025-02-22 22:10:44 1046

原创 图解算法数据结构—习题记录 | 链表

创建一个新节点headNode,双指针l1、l2遍历两链表,两两节点比较值,小的节点接入到headNode后,直到1或l2有一方指向null则退出循环,剩余的链表接入到新链表后。递归链表到末尾节点,再从尾开始依次创建一个新节点,值为当前节点的值,并将其连接到newHead后,再返回该新节点。递归返回结束后,形成一个新的链表。将链表节点依次推入栈中,再根据cnt取第几个数(在循环中当cnt==0时,返回当前数)),遍历链表,并在访问各节点时修改。走过链表尾节点时跳出(跳出后,先向前走cnt步后,双指针。

2025-02-20 01:45:26 862

原创 代码随想录算法学习Day3| LeetCode203 移除链表元素、LeetCode707 设计链表、LeetCode206 反转链表

插入和删除都是O(1),查询O(n)。适合数据量不固定,频繁增删,较少查询的场景。

2024-08-13 22:30:09 1566

原创 代码随想录算法学习Day2| LeetCode977 有序数组的平方、LeetCode209 长度最小的子数组、LeetCode59 螺旋矩阵

没看解题思路前:事先知道使用滑动窗口的方法,所以尝试带入:在循环中记录开始索引start,并不断计算总和total,直到total>=target的时候,记录结束索引end,并计算出本轮有多少个元素相加,下一轮再将开始索引start+1作为新的start开始计算,直到start等于数组最后一个索引时,停止循环。看完解题思路后:双指针分别指向数组的首和尾,循环里每次比较两个指针所指向的数 的平方,大的元素放置到新数组中(从后往前),直到左指针大于右指针时循环结束,时间复杂度为O(n)---来不及了晚点写。

2024-08-12 22:16:59 1305

原创 代码随想录算法学习Day1| LeetCode704 二分查找、LeetCode27 移除元素、LeetCode34 在排序数组中查找元素的第一个和最后一个位置、LeetCode35 搜索插入位置

没看解题思路前:遍历数组,把与目标相等的元素的索引位置记录在新数组中fast++)else看完解题思路后:运用二分法,分别寻找左边界(元素第一个出现的位置)和右边界(元素最后一个出现的位置)左边界:保证该元素的左边没有与目标相同的元素,如果有,缩小右边界右边界:保证该元素的右边没有与目标相同的元素,如果有,缩小左边界这题可以先把数组中无重复元素的二分法先写出来,再去考虑有重复元素的情况(这时只要调整target == nums[mid]里的情况)else。

2024-08-11 20:57:30 943

空空如也

空空如也

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

TA关注的人

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