算法基础
文章平均质量分 87
有时间要学习
人到洛阳花似锦
偏我来时不逢春
展开
-
专题八——链表
在有些链表题快慢双指针非常好用!原创 2024-10-29 16:39:20 · 276 阅读 · 0 评论 -
动态规划58道算法题
最后一块石头的重量 II这样问题就转为:选择一些数使得和等于sum/2!也就是01背包问题解法:动态规划(分5步)1状态表示dp[i][j] 表示从i个数里选,所有选法中能否凑成j这个数的最大和2确定状态转移方程(按照题目要求+经验)画图分析3初始化加一行加一列即可4填表顺序从上到下,从左往右5返回值sum-2*dp[n][sum/2] 或者是 abs(dp[n][sum/2]-(sum-dp[n][sum/2]))public://sum/2问题i原创 2024-10-20 16:06:57 · 689 阅读 · 0 评论 -
递归,搜索与回溯40道算法题
先进行画图分析N=2时,为了最下面的盘子解放,我们直接将(一个)盘子移到B上而N=3时,为了最下面的盘子解放,(参考N=2)然后我们将最大(解放)的盘子移到C上,那下一步呢?原创 2024-09-28 16:11:29 · 332 阅读 · 1 评论 -
专题六——模拟
5道模拟类型的算法题,快来挑战吧!!原创 2024-06-15 20:17:14 · 371 阅读 · 1 评论 -
专题五——位运算
位运算相关题目练习原创 2024-06-14 17:02:59 · 398 阅读 · 0 评论 -
专题四——前缀和
思路: 输入n个值组成数组arr,有q次询问:每次要求求出随机两个数的和;如果有一个一个在数组进行遍历后找到这两个数相加,这会导致时间超时;那我们就来构建一个新的数组,让这个数组来帮助我们进行求和:数组与与原数组多开出一个空间(n+1)(防止越界),让它从1位置的下标开始与arr的0位置下标对应,使得:dp[i]=d[i-1]+arr[i]:对应位置的dp数组是arr数组的前i个数之和加上i位置的值!然后我们就可以使用dp数组来进行求和了。原创 2024-04-12 11:09:46 · 854 阅读 · 0 评论 -
专题三——二分算法
34. 在排序数组中查找元素的第一个和最后一个位置 - 力扣(LeetCode)朴素二分算法解决不了,用非朴素二分模板来解决:题目要求第一个与最后一个位置,直接用两个非朴素模板求出与target相同的左右两个端点public://越界判断//开始元素下标(求左端点)//有可能没有target//最后元素下标(求右端点)//有的话在left的右边,left不用再次走到开始位置return ans;原创 2024-04-04 14:52:50 · 1932 阅读 · 1 评论 -
专题二——滑动窗口
原理:定义两个指针(下标)来维护所指向的区间始终是符合题目要求,大致分为三步:1进窗口:用一个指针来进行遍历搜索使指针区间符合要求2更新值:该区间符合要求后记录存储数值(可以是任意区间)3出窗口:另一个指针开始进行向后走继续查找符合要求的区间。原创 2024-03-22 11:13:01 · 1083 阅读 · 1 评论 -
专题一——双指针
原理:将数组进行区间划分,通过指针(下标)的移动实现题目所要求的区间(建议在做题与看题解时要自己反复模拟这个实现的过程,以后在做题做到类似的题才能举一反三!原创 2024-03-21 12:34:23 · 929 阅读 · 1 评论