剑指offer67题-No45.扑克牌顺子
模拟写法,时间复杂度Onlogn,花在快排身上。 bool IsContinuous(vector<int>& numbers) { if(numbers.size() == 0) return false; sort(numbers.begin(), numbers.end()); int cnt = 0; // 统计赖子个数 fo…
2025-6-02 15:22
|
|
2025-6-02 15:22
剑指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 → …
2025-5-28 12:17
|
|
2025-5-28 12:17
剑指offer67题-No31.整数中1出现的次数
感觉像是模拟题,法1,暴力遍历,时间复杂度应该是On class Solution { public: int get1(int x){ int sum = 0; while(x){ if(x % 10 == 1){ sum++; } x = x / 10; } return sum; } int NumberOf1Between1AndN_Sol…
2025-5-28 12:14
|
|
2025-5-28 12:14
剑指offer67题-No28.数组中出现次数超过一半的数字
感觉面试会考 有两种常规方法,哈希表与排序。但是做不到空间复杂度O1,时间复杂度On。 投票法: 核心思想是,如果我们把众数记为 +1,把其他数记为 −1,将它们全部加起来,显然和大于 0,从结果本身我们可以看出众数比其他数多。 选择一个cnt初始化为0,选择一个res 遍历数组,如果cnt为0的时候,就选择当前数字作为res 若cnt不为0,re…
2025-5-28 12:09
|
|
2025-5-28 12:09
剑指offer67题-No19.顺时针打印矩阵
边界模拟 模拟四个边界情况,并不断收缩。 vector<int> printMatrix(vector<vector<int> > matrix) { if(matrix.size() == 0) return {}; if(matrix.size() == 1) return matrix.front(); int l = 0;…
2025-5-19 15:51
|
|
2025-5-19 15:52