未了解的算法记录

78 阅读1分钟

189 环状替代 我还以为环状替代很难,认真看了解析发现,和48翻转图像的原地翻转很像。注意循环的次数是k和n的最大公约数。

const gcd = (x, y) => y ? gcd(y, x % y) : x;

var rotate = function(nums, k) {
    const n = nums.length;
    k = k % n;
    let count = gcd(k, n);
    for (let start = 0; start < count; ++start) {
        let current = start;
        let prev = nums[start];
        do {
            const next = (current + k) % n;
            const temp = nums[next];
            nums[next] = prev;
            prev = temp;
            current = next;
        } while (start !== current);
    }
};

8 状态机,虽然写出来了,但是需要加强理解。

28 KMP算法

剑指Offer 03 二分法

剑指offer 10 大数