数据结构与算法
KevinDurantxiang
据说健身和敲代码都会使人秃顶
展开
-
算法学习---分治算法(笔记总结+Leetcode题解析)
然后当指数小到一定程度时 比如指数为0时结果为1 指数为1时结果为a 再递归返回即可得到结果。我们根据指数的奇偶性来进行划分子问题 每次都能使得问题规模至少一半。所谓分治算法 就是把原问题转换为性质相同但规模较小的子问题。这样比我们一直去计算n-1次a*a显然工作量要减少。即实现我们自己的幂乘函数(以计算a的n次方为例)我们把子问题的结果合并即可得到问题的答案。子问题规模小到一定程度后可以直接求解。50实现myPow方法。原创 2022-09-01 21:27:51 · 186 阅读 · 0 评论 -
算法学习---回溯算法(笔记总结+Leetcode题解析)
回溯算法的本质是穷举 这点非常重要 穷举就决定了这不是一个高效的算法事实上有些问题能够通过暴力搜索求解出来就很不错了我们穷举出所有可能情况 然后选出我们想要的答案回溯法解决的问题都能够抽象成树形结构。原创 2022-09-01 21:27:05 · 101 阅读 · 0 评论 -
算法学习---贪心算法(笔记总结+Leetcode题解析)
需要注意的点是 对于这道题目而言 利润的最小单位是两天 我们要获取最大利润就是要去抓取每一天能够获取的利润 我们把相邻两天的股价变化算出来 抓住股票会上升的所有间隙即可。本质上还是子问题的划分 确定好贪心策略(这个是贪心算法的核心 只有对应问题找到对应的贪心策略才能保证结构的正确)最后将子问题的贪心解堆叠即可得到全局最优解。问题在于如果通过确定某种情况下从局部最优推到全局最优的可行性,这部分最好的方式就是举反例或是手动模拟一下局部最优可以推到全局最优。其实贪心算法核心思想在于通过局部最优达到全局最优。原创 2022-09-01 21:26:28 · 180 阅读 · 0 评论 -
算法学习---动态规划(笔记总结+Leetcode题解析)
然后就是初始化dp数组 和遍历顺序了 写完代码后一定要debug去看自己的dp数组推导变化是否和自己想的一样。迭代实现每个子问题只计算一次 从最小的子问题算起 考虑计算顺序 保证后面使用到的值前面已经做过计算。这里可以通过滚动变量的方式将代码改进优化 因为dp[i]的值之和dp[i-1]有关。正确解题的前提是一定要明确好状态转移方程(即递推公式) 确定好dp数组的含义。分析:将问题划分为 以某个元素为结尾的最大子数组和。dp[i]:以i下标元素为结尾的最大子数组和。递归的时间复杂度高 空间较小。原创 2022-09-01 21:25:18 · 385 阅读 · 0 评论 -
模块一:数组
涵盖数组的提示点 并附上LeetCode经典数组算法题 并提炼出二分法、双指针、滑动窗口、模拟行为四大思想原创 2022-03-09 20:37:01 · 121 阅读 · 0 评论