其他分享
首页 > 其他分享> > 力扣打卡(15):上学的时间过的真快,找不到时间刷题.。。。

力扣打卡(15):上学的时间过的真快,找不到时间刷题.。。。

作者:互联网

10.12lc

开学的这两天 是真的瞎忙。。。 刷题明显没时间了 可恶吖~

29. 两数相除 - 力扣(LeetCode) (leetcode-cn.com)

:思路 除法的本质: 就是减法 : 这题要使用位运算~

class Solution {
    public int divide(int dividend, int divisor) {
        //超时
    if(dividend  == 1<< 31 && divisor == -1  )  return (1<<31)-1;
        
    int sing = (dividend > 0) ^ (divisor >0) ? -1: 1;
    long a=Math.abs((long)dividend);
    long b =Math.abs((long)divisor);
    int res =0;
    int i=0;
    while( a-b >=0){
        long temp =b;
        int m=1;
        //要使用的倍数的 相减 为了减少时间复杂度
        while(temp << 1 <= a){
            temp <<=1;
            m<<= 1;
        }   
        a=a-temp;
        res+=m;
       
          
    }    
      return res * sing;
        }
}

146. LRU 缓存机制 - 力扣(LeetCode) (leetcode-cn.com)

大厂常客面试:

:我刚开始思路就是 使用 LinkedHashMap:

class LRUCache {
        int capacity;
        LinkedHashMap<Integer,Integer> cache;
    public LRUCache(int capacity) {
       this.capacity = capacity;
       cache = new LinkedHashMap<Integer,Integer>(capacity,0.75f,true){
//开启 读取顺序的更新
        @Override
        protected boolean removeEldestEntry(Map.Entry eldest){
            return cache.size() > capacity;
        }
       };
    }
    
    public int get(int key) {
            return cache.getOrDefault(key,-1);
    }
    
    public void put(int key, int value) {
            cache.put(key,value);
    }
}

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

题解:给出的 自己去 “假手动实现”LRU: 问社么这么说呢? 说白了 还是

LinkedHashMap。。。。。 只是自己去手写了的链表。。。 不过这个解题的思想很值得思考 答案自己去官网看吧

标签:capacity,int,cache,long,力扣,key,15,打卡,LRUCache
来源: https://blog.csdn.net/qq_44836918/article/details/120732116