- 博客(57)
- 问答 (1)
- 收藏
- 关注
原创 常考100
3. 再交换堆顶元素与倒数第二个元素,然后调整第一个元素到倒数第三个元素,这一步获取第二大值。# 2. 让堆顶最大元素与最后一个交换,然后调整第一个元素到倒数第二个元素,这一步获取最大值。# 4. 以此类推,直到最后一个元素交换之后完毕。136.只出现一次的数字。# 1. 先建立大顶堆。
2024-08-14 12:15:08
296
原创 字符串【1-4】、链表【5-7】、双指针【8-14】、栈和队列【15-18】
【代码】字符串【1-4】、链表【5-7】、双指针【8-14】、栈和队列【15-18】
2024-07-30 16:39:23
169
原创 python数据结构与算法
列表排序 内置函数 sort()常见的排序算法差生三人组O(n^2)好生三人组O(nlogn) 【运行时间:快排<归并<堆排序】其他排序冒泡排序快速排序:极端情况,排序效率低希尔排序选择排序堆排序:在快的排序算法中相对较慢计数排序插入排序归并排序:需要额外的内存开销基数排序稳定性:排序后 2 个相等键值的顺序和排序之前它们的顺序相同。
2024-07-29 22:34:49
1426
原创 【leetcode64-69二分查找、70-74栈、75-77堆】
left = 0else :i -= 1j += 1# 1、首先,在 nums 数组中二分查找得到第一个大于等于 target的下标leftBorder;# 2、在 nums 数组中二分查找得到第一个大于等于 target+1的下标, 减1则得到rightBorder;# 3、如果开始位置在数组的右边或者不存在target,则返回[-1, -1]。
2024-07-03 23:00:30
443
原创 2024/5/9【贪心5/5】--代码随想录算法训练营day36|56. 合并区间、738.单调递增的数字、968.监控二叉树 (可跳过)
力扣链接我这样写会忽略掉最后一个力扣链接想到了贪心,还要考虑遍历顺序,只有从后向前遍历才能重复利用上次比较的结果。332 -> 329->299
2024-06-27 21:43:57
212
原创 2024/5/9【贪心4/6:重叠区间】--代码随想录算法训练营day35|452. 用最少数量的箭引爆气球、435. 无重叠区间、 763.划分字母区间
箭的数量就相当于是非交叉区间的数量,只要把弓箭那道题目代码里射爆气球的判断条件加个等号(认为[0,1][1,2]不是相邻区间),然后用总区间数减去弓箭数量 就是要移除的区间数量了。在遍历的过程中相当于是要找每一个字母的边界,如果找到之前遍历过的所有字母的最远边界,说明这个边界就是分割点了。贪心(版本二)与452.用最少数量的箭引爆气球 (opens new window)、435.无重叠区间 (opens new window)相同的思路。局部最优:当气球出现重叠,一起射,所用弓箭最少。
2024-06-27 21:17:36
442
原创 2024/5/9【贪心3/6】--代码随想录算法训练营day34|134. 加油站、135. 分发糖果、860.柠檬水找零、406.根据身高重建队列
【暴力法】 for循环适合模拟从头到尾的遍历,而while循环适合模拟环形遍历,要善于使用while!
2024-06-26 17:23:07
336
原创 2024/6/24【单调栈】739. 每日温度、496.下一个更大元素 I、503.下一个更大元素II、42.接雨水、84.柱状图中最大的矩形
通常是一维数组,要寻找任一个元素的右边或者左边第一个比自己大或者小的元素的位置,此时我们就要想到可以用单调栈了。时间复杂度为O(n)。如果求一个元素右边第一个更大元素,单调栈就是递增的,如果求一个元素右边第一个更小元素,单调栈就是递减的。
2024-06-24 20:18:41
184
原创 2024/06/21--代码随想录算法10-12/17| 子序列问题
给定字符串 s 和 t ,判断 s 是否为 t 的子序列。else:dp[i][j] = dp[i][j - 1] #相当于t要删除元素,继续匹配给定一个字符串 s 和一个字符串 t ,计算在 s 的子序列中 t 出现的个数。#一部分是用s[i - 1]来匹配,那么个数为dp[i - 1][j - 1]。#一部分是不用s[i - 1]来匹配,个数为dp[i - 1][j]。
2024-06-22 18:27:11
666
原创 【leetcode37-51】二叉树
二叉树的直径,因为他不一定经过root,但是,最长路径,一定是有个公共祖先,所以,只要有个全局变量self.max记录就行。
2024-06-19 16:54:49
380
原创 2024/06/18--代码随想录算法7/17|198.打家劫舍、213.打家劫舍II、337.打家劫舍III
动态规划其实就是使用状态转移容器来记录状态的变化,这里可以使用一个长度为2的数组,记录当前节点偷与不偷所得到的的最大金钱。如果抢了当前节点,两个孩子就不能动,如果没抢当前节点,就可以考虑抢左右孩子(注意这里说的是“考虑”)与198.打家劫舍,213.打家劫舍II一样,关键是要讨论当前节点抢还是不抢。本题一定是要后序遍历,因为通过递归函数的返回值来做下一步计算。空间复杂度:O(log n),算上递推系统栈的空间。时间复杂度: O(n)空间复杂度: O(n)时间复杂度O(n),每个节点只遍历了一次。
2024-06-18 12:46:50
708
原创 2024/06/17--代码随想录算法6/17|322.零钱兑换 279.完全平方数 139.单词拆分
如果求组合数就是外层for循环遍历物品,内层for遍历背包。如果求排列数就是外层for遍历背包,内层for循环遍历物品力扣链接279.完全平方数139.单词拆分力扣链接
2024-06-17 23:00:42
856
原创 2024/06/15--代码随想录算法5/17|完全背包、518. 零钱兑换 II、377. 组合总和 Ⅳ、70.爬楼梯
们知道01背包内嵌的循环是从大到小遍历,为了保证每个物品仅被添加一次。而完全背包的物品是可以添加多次的,所以要从小到大去遍历。==外循环遍历背包,内循环遍历物品,从小到大。
2024-06-15 22:57:28
809
原创 2024/06/14--代码随想录算法4/17|1049.最后一块石头的重量 II、494.目标和、474.一和零
力扣链接动态规划5步曲dp[j]表示容量(这里说容量更形象,其实就是重量)为j的背包,最多可以背最大重量为dp[j]。确定递推公式,01背包的递推公式为:dp[j] = max(dp[j], dp[j - weight[i]] + value[i]);本题则是:dp[j] = max(dp[j], dp[j - stones[i]] + stones[i]);dp数组如何初始化确定遍历顺序。
2024-06-14 22:52:33
622
原创 2024/06/13--代码随想录算法(贪心)3/6|134.加油站、135.分发糖果、860.柠檬水找零、406.根据身高重建队列
【代码】2024/06/13--代码随想录算法(贪心)3/6|134.加油站、135.分发糖果、860.柠檬水找零、406.根据身高重建队列。
2024-06-13 17:57:04
207
原创 2024/06/13--代码随想录算法3/17|01背包问题 二维、01背包问题 一维、416. 分割等和子集
回归主题:首先,本题要求集合里能否出现总和为 sum / 2 的子集。要明确本题中我们要使用的是01背包,因为元素我们只能用一次。其实就是遍历物品i的时候,覆盖i-1的结果。
2024-06-13 17:17:00
737
原创 2024/06/13--代码随想录算法2/17| 62.不同路径、63. 不同路径 II、343. 整数拆分 (可跳过)、96.不同的二叉搜索树 (可跳过)
【代码】2024/06/13--代码随想录算法day39| 62.不同路径、63. 不同路径 II、343. 整数拆分 (可跳过)、96.不同的二叉搜索树 (可跳过)
2024-06-13 13:04:57
997
原创 2024/06/11--代码随想录算法1/17|理论基础、509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯
理论基础509. 斐波那契数70. 爬楼梯746. 使用最小花费爬楼梯
2024-06-11 21:51:17
164
原创 【leetcode22-36】链表
方法二:迭代,初始化一个空链表,每次循环,往链表的末尾添加一个节点。注意:是先让快慢指针跑起来,再看,快慢指针是否会相遇。
2024-06-04 19:44:29
350
原创 【leetcode10-21】子串、普通数组、矩阵
什么是:前缀和指一个数组的某下标之前的所有数组元素的和(包含其自身)通常,会在前缀和首位放一个0。比如数组[1,2,3。其前缀和是[0,1,3,6]。比如我们要算i,ji,ji,j之间的和,那么就是nums[i]+nums[i+1]+⋯+nums[j]nums[i]
2024-06-03 22:38:28
757
原创 2024/5/9【贪心2/6】--代码随想录算法训练营day32|理论基础、122.买卖股票的最佳时机II、55. 跳跃游戏、45.跳跃游戏II
力扣链接力扣链接力扣链接
2024-05-09 19:40:33
130
原创 2024/5/9【贪心1/6】--代码随想录算法训练营day31|理论基础、455.分发饼干、376. 摆动序列、53. 最大子序和
力扣链接力扣链接力扣链接
2024-05-09 19:38:01
155
原创 2024/5/9【回溯6/6】--代码随想录算法训练营day30| 332.重新安排行程、51. N皇后、 37. 解数独 、总结
332.重新安排行程51. N皇后37. 解数独总结
2024-05-09 19:34:39
295
原创 2024/5/9【回溯5/6】--代码随想录算法训练营day29|491.递增子序列、46.全排列、 47.全排列 II
力扣链接力扣链接力扣链接
2024-05-09 19:32:54
133
原创 2024/5/9【回溯3/6】--代码随想录算法训练营day27|39. 组合总和、40.组合总和II、131.分割回文串
力扣链接力扣链接力扣链接
2024-05-09 19:25:50
207
原创 2024/5/1--代码随想录算法训练营day23|669. 修剪二叉搜索树 、108.将有序数组转换为二叉搜索树 、538.把二叉搜索树转换为累加树 、总结篇
力扣链接力扣链接力扣链接
2024-05-01 22:47:16
220
原创 2024/5/1--代码随想录算法训练营day22|235. 二叉搜索树的最近公共祖先 、701.二叉搜索树中的插入操作 、450.删除二叉搜索树中的节点
力扣链接力扣链接力扣链接
2024-05-01 22:44:18
235
原创 2024/5/1--代码随想录算法训练营day21|530.二叉搜索树的最小绝对差 、 501.二叉搜索树中的众数 、236. 二叉树的最近公共祖先
力扣链接力扣链接力扣链接
2024-05-01 22:41:08
268
1
原创 2024/5/1--代码随想录算法训练营day20|654.最大二叉树、 617.合并二叉树、 700.二叉搜索树中的搜索、98.验证二叉搜索树
力扣链接力扣链接力扣链接力扣链接
2024-05-01 22:38:10
184
1
空空如也
这个我没看出问题,哪位能看看
2022-02-08
TA创建的收藏夹 TA关注的收藏夹
TA关注的人