JavaScript 面试备忘单 – 第 2 部分

javascript 面试备忘单 - 第 2 部分

常见 leetcode 模式

// two pointers - in-place array modificationconst modifyarray = (arr) => {    let writepointer = 0;    for (let readpointer = 0; readpointer  {    let slow = head, fast = head;    while (fast && fast.next) {        slow = slow.next;        fast = fast.next.next;        if (slow === fast) return true;    }    return false;};// sliding window - fixed sizeconst fixedslidingwindow = (arr, k) => {    let sum = 0;    // initialize first window    for (let i = 0; i < k; i++) {        sum += arr[i];    }    let maxsum = sum;    // slide window    for (let i = k; i  {    let start = 0, sum = 0, minlen = infinity;    for (let end = 0; end = target) {            minlen = math.min(minlen, end - start + 1);            sum -= arr[start];            start++;        }    }    return minlen === infinity ? 0 : minlen;};// bfs - level order traversalconst levelorder = (root) => {    if (!root) return [];    const result = [];    const queue = [root];    while (queue.length) {        const levelsize = queue.length;        const currentlevel = [];        for (let i = 0; i  {    const result = [];    const traverse = (node) => {        if (!node) return;        // pre-order        result.push(node.val);        traverse(node.left);        // in-order would be here        traverse(node.right);        // post-order would be here    };    traverse(root);    return result;};// backtracking templateconst backtrack = (nums) => {    const result = [];    const bt = (path, choices) => {        if (/* ending condition */) {            result.push([...path]);            return;        }        for (let i = 0; i  {    const dp = new array(n + 1).fill(0);    dp[0] = 1; // base case    for (let i = 1; i <= n; i++) {        for (let j = 0; j  {    const memo = new map();    const dp = (n) => {        if (n <= 1) return 1;        if (memo.has(n)) return memo.get(n);        let result = 0;        for (let i = 0; i  {    const stack = []; // [index, value]    const result = new array(arr.length).fill(-1);    for (let i = 0; i  arr[i]) {            const [previndex, _] = stack.pop();            result[previndex] = i - previndex;        }        stack.push([i, arr[i]]);    }    return result;};// prefix sumconst prefixsum = (arr) => {    const prefix = [0];    for (let i = 0; i  {    let left = 0, right = arr.length;    while (left < right) {        const mid = math.floor((left + right) / 2);        if (arr[mid]  {    let left = 0, right = arr.length;    while (left < right) {        const mid = math.floor((left + right) / 2);        if (arr[mid]  i);        this.rank = new array(n).fill(0);    }    find(x) {        if (this.parent[x] !== x) {            this.parent[x] = this.find(this.parent[x]); // path compression        }        return this.parent[x];    }    union(x, y) {        let rootx = this.find(x);        let rooty = this.find(y);        if (rootx !== rooty) {            if (this.rank[rootx] < this.rank[rooty]) {                [rootx, rooty] = [rooty, rootx];            }            this.parent[rooty] = rootx;            if (this.rank[rootx] === this.rank[rooty]) {                this.rank[rootx]++;            }        }    }}

登录后复制

常见的时间/空间复杂度模式

// O(1) - ConstantArray.push(), Array.pop(), Map.set(), Map.get()// O(log n) - LogarithmicBinary Search, Balanced BST operations// O(n) - LinearArray traversal, Linear Search// O(n log n) - LinearithmicEfficient sorting (Array.sort())// O(n²) - QuadraticNested loops, Simple sorting algorithms// O(2ⁿ) - ExponentialRecursive solutions without memoization

登录后复制

以上就是JavaScript 面试备忘单 – 第 2 部分的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2645900.html

(0)
上一篇 2025年3月7日 07:39:04
下一篇 2025年2月25日 01:16:31

AD推荐 黄金广告位招租... 更多推荐

相关推荐

发表回复

登录后才能评论