分类: 剑指offer算法67题

记录剑指offer中67道算法题的刷题历程,参考博主@阿秀的学习笔记。

60 篇文章

剑指offer67题-No41-42.和为S的连续正数序列、和为S的两个数字
双指针算法。 法1:直接枚举,从头到尾枚举区间,记录出某段区间的值,如果值==sum,把这段区间的值加入res中。时间复杂度为On√n(n根号n)。因为内层判断不会超过√n次(1+2+3+...+√n > n)。因此空间复杂度为O√n。 vector<vector<int> > FindContinuousSequence(int…
剑指offer67题-No40.数组中只出现一次的数字
给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。你必须设计并实现线性时间复杂度的算法且使用常数级空间来解决此问题。 异或、位运算。 有一个简化版的题目: 给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。…
剑指offer67题-No35.数组中的逆序对
归并排序 在合并数组的时候,当发现右边的小于左边的时候,此时可以直接求出当前产生的逆序对的个数。可以参考acwing的题解:AcWing 788. 【算法基础课】逆序对的数量(归并排序) - AcWing #include <vector> class Solution { public: long long merge(vector<…
剑指offer67题-No33.第N个丑数
数学模拟题, 只包含质因子2、3和5的数称作丑数,所以丑数的形式实质上是:2x3y5z。 对于x、y、z的理解,把他们视作三个独立维护的指针,可以想象有三个队列: 队列2: 1×2 → 2×2 → 3×2 → 4×2 → ...队列3: 1×3 → 2×3 → 3×3 → 4×3 → ...队列5: 1×5 → 2×5 → 3×5 → 4×5 → …