摘要:
文章目录题目暴力解法计数补偿法参考 题目 945. 使数组唯一的最小增量 - 力扣(LeetCode) 暴力解法 很容易想到的一个解法是排序,对A[i-1] >= A[i]的情况,把A[i]变成A[i-1] + 1,结果 += 步长即可。但这样做很低效,时间复杂度为O(NlogN)。 class S 阅读全文
摘要:
文章目录题目数学解法深度优先搜索参考 题目 365. 水壶问题 - 力扣(LeetCode) 数学解法 裴蜀定理:对于两个数x,y, 存在a,b使得ax+by = z成立当且仅当z是x与y最大公因数的倍数。 class Solution { public: bool canMeasureWater( 阅读全文
摘要:
文章目录基本形式需要访问右邻居需要访问左右邻居C++中的二分查找参考 基本形式 left和right均为索引值 循环条件:left <= right 向左查找:right = mid-1 向右查找:left = mid+1 查找条件可以在不与元素的两侧进行比较的情况下确定 int binarySea 阅读全文
摘要:
文章目录题目DP解法思路复杂度分析实现贪心+二分解法思路复杂度分析实现参考 题目 300. 最长上升子序列 - 力扣(LeetCode) DP解法 思路 开一个长度与原数组相同的数组dp,初始值dp[0]=1。dp数组元素的含义是:到当前索引为止,最大的递增子序列长度。接下来开始遍历数组,设当前索引 阅读全文
摘要:
最大公因数(Greatest Common Divisor) int gcd(int a, int b) { return b == 0 ? a : gcd(b, a % b); } 也可以直接使用C++ algorithm库中的__gcd()函数 最小公倍数(Least Common Multip 阅读全文
摘要:
文章目录题目Boyer-Moore 投票算法思路复杂度分析实现哈希表解法思路复杂度分析实现其它解法分治法实现排序法随机算法参考 题目 链接 Boyer-Moore 投票算法 思路 摩尔投票法,遇到相同的数,就投一票,遇到不同的数,就减一票,最后还存在票的数就是众数。 复杂度分析 O(n) 实现 cl 阅读全文
摘要:
文章目录题目前缀和解法思路复杂度分析实现优化C++复习参考 题目 1013. 将数组分成和相等的三个部分 - 力扣(LeetCode) 前缀和解法 思路 遍历数组,并维护一个前缀和数组preSum,方便后面求区间和 数组和sum = preSum[size]-1 如果sum%3 != 0 返回fal 阅读全文
摘要:
文章目录题目DFS+贪心+剪枝解法思路实现DP解法(自上而下)思路实现DP解法(自下而上)思路实现C++复习std::sort的用法其他参考 题目 题目链接 DFS+贪心+剪枝解法 思路 一看到这种组合问题,就想到了DFS,并且想到了一个优化点:对coins排序,从大到小进行搜索,搜索到一种解法,直 阅读全文
摘要:
文章目录题目暴力解法思路复杂度分析实现单调的双端队列解法思路复杂度分析实现C++复习std::queue常用操作复习std::deque常用操作复习参考 题目 题目链接 暴力解法 思路 这题最开始想到的是暴力法,用一个队列+一个数组实现。因为数据范围在1~105之间,可以用类似于桶排序的思路,插入或 阅读全文
摘要:
一、请回望第一次作业,你对于软件工程课程的想象 1)对比开篇博客你对课程目标和期待,“希望通过实践锻炼,增强计算机专业的能力和就业竞争力”,对比目前的所学所练所得,在哪些方面达到了你的期待和目标,哪些方面还存在哪些不足,为什么? 达标方面:完成了一个完整的项目 不足:理论课没有好好学 2)总结这门课 阅读全文