大家面试遇到过很难的算法题吗?

我先来,「寻找两个正序数组的中位数」,没做过大概率面试的时候是做不出来的

#牛客AI配图神器##后端##java##go##程序员##后端##算法##算法题##leetcode#
全部评论
力扣暴力合并的做法,能过,只不过没最优解好
点赞 回复 分享
发布于 08-11 15:52 江苏
属于是看懂之后 后面也不想再去看的题
点赞 回复 分享
发布于 08-10 16:51 浙江

相关推荐

头像 会员标识
昨天 18:24
门头沟学院 Java
可运行版本 import java.util.HashMap;import java.util.Map;class LRUCache {class DLinkedList{int key;int val;DLinkedList next;DLinkedList prev;long timeStamp;public DLinkedList(){this.timeStamp = System.currentTimeMillis();}public DLinkedList(int key,int val){this.key = key;this.val = val;this.timeStamp = System.currentTimeMillis();}}int capacity;int size;DLinkedList head;DLinkedList tail;Map<Integer,DLinkedList> map;long ttl;public LRUCache(int capacity,long ttl){this.capacity = capacity;size = 0;head = new DLinkedList();tail = new DLinkedList();head.next=tail;tail.prev = head;map = new HashMap<>();this.ttl = ttl;}public void addToHead(DLinkedList node){node.next = head.next;head.next.prev = node;node.prev = head;head.next = node;}public void removeOne(DLinkedList node){node.next.prev = node.prev;node.prev.next = node.next;}public boolean isExpired(DLinkedList node){long now = System.currentTimeMillis();long diff = now-node.timeStamp;if(diff>ttl){return true;//true是过期了的意思 false才是没过期!!!}return false;}public int get(int key){if(!map.containsKey(key)){return -1;}else{DLinkedList node = map.get(key);if(isExpired(node)){removeOne(node);map.remove(key);size--;return -1;}node.timeStamp = System.currentTimeMillis();removeOne(node);addToHead(node);return node.val;}}public void put(int key,int val){if(!map.containsKey(key)){DLinkedList newNode = new DLinkedList(key,val);addToHead(newNode);map.put(key,newNode);size++;if(size>capacity){DLinkedList oldNode = tail.prev;removeOne(oldNode);map.remove(oldNode.key);size--;}}else {DLinkedList newNode = new DLinkedList(key,val);DLinkedList oldNode = map.get(key);removeOne(oldNode);addToHead(newNode);map.put(key,newNode);}}}class Main{public static void main(String[] args) {LRUCache cache = new LRUCache(2, 1000); // 1秒TTLcache.put(1, 1);cache.put(2, 2);System.out.println(cache.get(1)); // 返回 1try {Thread.sleep(1500); // 等待1.5秒让数据过期} catch (InterruptedException e) {e.printStackTrace();}System.out.println(cache.get(1)); // 返回 -1(已过期)System.out.println(cache.get(2)); // 返回 -1(已过期)}}
点赞 评论 收藏
分享
08-05 11:10
云南大学 Java
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务