0
点赞
收藏
分享

微信扫一扫

两周刷题记录

就是耍帅 2022-03-30 阅读 29

2022.3.17

146. LRU 缓存

/**
 * @param {number} capacity
 */
var LRUCache = function(capacity) {
    this.capacity = capacity;
    this.map = new Map();
};

/** 
 * @param {number} key
 * @return {number}
 */
LRUCache.prototype.get = function(key) {
    // 当值存在时
    if(this.map.has(key)){
        const temp = this.map.get(key);
        this.map.delete(key);
        this.map.set(key, temp);
        return temp;
    }
    else {
        return -1;
    }

};

/** 
 * @param {number} key 
 * @param {number} value
 * @return {void}
 */
LRUCache.prototype.put = function(key, value) {
    // 当值存在,被访问时
    if(this.map.has(key)){
        this.map.delete(key);
    }
    this.map.set(key,value);
    if(this.map.size > this.capacity) {
        this.map.delete(this.map.keys().next().value);
    }
};

/**
 * Your LRUCache object will be instantiated and called as such:
 * var obj = new LRUCache(capacity)
 * var param_1 = obj.get(key)
 * obj.put(key,value)
 */

image-20220318211813252

class LRUCache {
    constructor(capacity) {
        this.capacity = capacity;
        this.map = new Map();
    }
    get(key) {
        if (this.map.has(key)) {
            // get表示访问该值
            // 所以在访问的同时,要将其调整位置,放置在最后
            const temp = this.map.get(key);
            // 先删除,再添加
            this.map.delete(key);
            this.map.set(key, temp);
            // 返回访问的值
            return temp;
        } else {
            // 不存在,返回-1
            return -1;
        }
    }
    put(key, value) {
        // 要将其放在最后,所以若存在key,先删除
        if (this.map.has(key)) this.map.delete(key);
        // 设置key、value
        this.map.set(key, value);
        if (this.map.size > this.capacity) {
            // 若超出范围,将map中头部的删除
            // map.keys()返回一个迭代器
            // 迭代器调用next()方法,返回包含迭代器返回的下一个值,在value中
            this.map.delete(this.map.keys().next().value);
        }
    }
}


/**
 * Your LRUCache object will be instantiated and called as such:
 * var obj = new LRUCache(capacity)
 * var param_1 = obj.get(key)
 * obj.put(key,value)
 */

/**
 * @param {number} capacity
 */
var LRUCache = function(capacity) {
    this.capacity = capacity;
    this.map = new Map();
};

/** 
 * @param {number} key
 * @return {number}
 */
LRUCache.prototype.get = function(key) {
    if(this.map.has(key)){
        let temp=this.map.get(key)
         this.map.delete(key);
         this.map.set(key, temp);
         return temp
    }else{
        return -1
    }
};

/** 
 * @param {number} key 
 * @param {number} value
 * @return {void}
 */
LRUCache.prototype.put = function(key, value) {
    if(this.map.has(key)){
        this.map.delete(key);
    }
    this.map.set(key,value);
    if(this.map.size > this.capacity){
     
        this.map.delete(this.map.keys().next().value);
    }
};

/**
 * Your LRUCache object will be instantiated and called as such:
 * var obj = new LRUCache(capacity)
 * var param_1 = obj.get(key)
 * obj.put(key,value)
 */


2022.3.21

460. LFU 缓存

二、 653. 两数之和 IV - 输入 BST

/**
 * Definition for a binary tree node.
 * function TreeNode(val, left, right) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.left = (left===undefined ? null : left)
 *     this.right = (right===undefined ? null : right)
 * }
 */
/**
 * @param {TreeNode} root
 * @param {number} k
 * @return {boolean}
 */
var findTarget = function(root, k) {
    const set = new Set();
    // const target = k - root.val
    const searchTree = (root, k) => {
        if(!root) {
            return false;
        }
        if(set.has(k-root.val)) {
            return true;
        }
        set.add(root.val)
        return searchTree(root.left,k) || searchTree(root.right,k)
    }
    return searchTree(root, k)
    
};



image-20220321215250618

2022.3.22

一、 78. 子集

image-20220322215743858

/**
 * @param {number[]} nums
 * @return {number[][]}
 */
var subsets = function(nums) {
    let result = [];
    let num = [];
    const backtracking = (start) => {
        result.push(num.slice());
        for (let i = start; i< nums.length; i++){
            num.push(nums[i])
            backtracking(i+1);
            num.pop()
        }
    }
    backtracking(0);
    return result;
};

二、 77. 组合

/**
 * @param {number} n
 * @param {number} k
 * @return {number[][]}
 */
var combine = function(n, k) {
    let result = [];
    let track = [];
    const backtrack = (start) => {
        if(track.length === k){
            result.push(track.slice())
        }
        for(let i = start; i < n ;i++){
            // 做选择
            track.push(i+1);
            backtrack(i+1)
            // 撤销选择 
            track.pop()
        }
    }
    backtrack(0);
    return result
};

image-20220322221630607

37. 解数独

36. 有效的数独

2022.3.24

一、 剑指 Offer II 056. 二叉搜索树中两个节点之和

/**
 * Definition for a binary tree node.
 * function TreeNode(val, left, right) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.left = (left===undefined ? null : left)
 *     this.right = (right===undefined ? null : right)
 * }
 */
/**
 * @param {TreeNode} root
 * @param {number} k
 * @return {boolean}
 */
var findTarget = function(root, k) {
    const set = new Set();
    const helper = (root , k) => {
        if(root === null){
            return false;
        }
        if (set.has(k-root.val)) {
            return true;
        }
        set.add(root.val);
        return helper(root.left,k) || helper(root.right, k)
    }
    return helper(root,k);
};

image-20220324211102191

二、 剑指 Offer II 052. 展平二叉搜索树

/**
 * Definition for a binary tree node.
 * function TreeNode(val, left, right) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.left = (left===undefined ? null : left)
 *     this.right = (right===undefined ? null : right)
 * }
 */
/**
 * @param {TreeNode} root
 * @return {TreeNode}
 */
var increasingBST = function(root) {
    const res = [];
    const inorder = (root, res) => {
        if(root === null) return ;
        inorder(root.left, res);
        res.push(root.val);
        inorder(root.right, res);
    }
    inorder(root,res);

    const dummyNode = new TreeNode(-1);
    let curNode = dummyNode;
    for (const value of res) {
        curNode.right = new TreeNode(value);
        curNode = curNode.right;
    }
    return dummyNode.right;

    
};

image-20220324214158411

三、 897. 递增顺序搜索树

2022.3.27

剑指 Offer 55 - I. 二叉树的深度

/**
 * Definition for a binary tree node.
 * function TreeNode(val) {
 *     this.val = val;
 *     this.left = this.right = null;
 * }
 */
/**
 * @param {TreeNode} root
 * @return {number}
 */

var maxDepth = function (root) {
  // 定义:输入一个节点,返回以该节点为根的二叉树的最大深度
  if (root == null) return 0;
  return 1 + Math.max(maxDepth(root.left), maxDepth(root.right));
};


image-20220327232859965

举报

相关推荐

0 条评论