- 博客(9)
- 收藏
- 关注
原创 [算法学习09]二叉树基础
1. 如何思考二叉树相关问题?- 不要一开始就陷入细节,而是思考整棵树与其左右子树的关系。2. 为什么需要使用递归?- 子问题和原问题是相似的,他们执行的代码也是相同的(类比循环),但是子问题需要把计算结果返回给上一级,这更适合用递归实现。3. 为什么这样写就一定能算出正确答案?- 由于子问题的规模比原问题小,不断“递”下去,总会有个尽头,即递归的边界条件 ( base case ),直接返回它的答案“归”;- 类似于数学归纳法(多米诺骨牌),n=1时类似边界条件;
2024-03-23 21:11:51
795
1
原创 [算法学习08] 一些链表题
解题思路脑筋急转弯.直接用后一个节点的值覆盖当前的节点,然后删除后一个节点即可。如果我们要删除某个节点,那么必须有它的前驱节点。这题没有,所以可以通过值得转移来完成。以下是代码。
2024-03-20 12:07:33
319
1
原创 [算法学习07]环形链表
快慢指针的使用是本节的核心。我们有一个链表[1,2,3,4,5],如何找到中间的那个节点呢?我们可以设计一个快指针以及一个慢指针,初始的时候都赋值为链表的起点,快指针每次走两步,慢指针每次走一步。那么当快指针走到链表的末尾时,慢指针就正好停在了中间的位置。以下是今天的例题。
2024-03-18 22:11:39
739
1
原创 [算法学习06] 反转链表
简单题,需要三个指针, pre,cur,nxt.pre 是前一个指针, cur是当前指针, nxt是临时指针用于存在当前节点的下一个节点。反转链表 就是 cur.next = pre pre = cur cur = nxt 直到cur is None循环结束值得注意的是, 当cur == None pre正好是反转后链表的表头递归写法,要有出口!我们出口是什么?当找到最后一个节点的时候也就是我们反转后链表的头就是出口!所以 if head.next is None: return head。
2024-03-17 20:08:49
851
1
原创 [算法学习04] 二分查找系列
给你一个按照非递减顺序排列的整数数组nums,和一个目标值target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值target,返回[-1, -1]。你必须设计并实现时间复杂度为O(log n)的算法解决此问题。示例 1:nums = [[3,4]示例 2:nums = [[-1,-1]示例 3:[-1,-1]nums是一个非递减数组解题思路:在了解了上面的内容以后,这道题就显得非常容易了。
2024-03-02 15:50:27
894
1
原创 [算法学习03] 同向双指针的使用
本节是同向双指针的学习。同向双指针的使用前提,单调性(数组中所有元素的性质一样(正数、字母....))。先贴上灵神的链接。涉及题目主要有。
2024-02-29 21:13:58
839
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人