当前位置: 首页 > ops >正文

力扣Hot100每日N题(17~18)

148. 排序链表

链表归并排序,但是太麻烦了不想学了

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode() {}*     ListNode(int val) { this.val = val; }*     ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public ListNode sortList(ListNode head) {List<Integer> list = new ArrayList<>();ListNode temp = head;while(temp != null){list.add(temp.val);temp = temp.next;}Collections.sort(list);temp = head;int index = 0;while(temp != null){temp.val = list.get(index);index++;temp = temp.next;}return head;}
}

146. LRU 缓存

使用哈希表和双端队列
c++版本

struct LinkNode{int key, value;LinkNode* pre;LinkNode* next;LinkNode(): key(0), value(0), pre(nullptr), next(nullptr) {}LinkNode(int _key, int _value): key(_key), value(_value), pre(nullptr), next(nullptr) {}
};
class LRUCache {
private:unordered_map<int, LinkNode*> cache;LinkNode* head;LinkNode* tail;int size;int capacity;
public:LRUCache(int _capacity) {size = 0, capacity = _capacity;head = new LinkNode();tail = new LinkNode();head->next = tail;tail->pre = head;}int get(int key) {if(!cache.count(key)) return -1;LinkNode* node = cache[key];moveToHead(node);return node->value;}void put(int key, int value) {if(!cache.count(key)){LinkNode* node  = new LinkNode(key, value);cache[key] = node;addToHead(node);if(++size > capacity){LinkNode* removed = removeTail();cache.erase(removed->key);delete removed;--size;}}else{LinkNode* node = cache[key];node->value = value;moveToHead(node);}}void moveToHead(LinkNode* node){removeNode(node);addToHead(node);}LinkNode* removeTail(){LinkNode* node = tail->pre;removeNode(node);return node;}void removeNode(LinkNode* node){node->pre->next = node->next;node->next->pre = node->pre;}void addToHead(LinkNode* node){node->next = head->next;node->pre = head;head->next->pre = node;head->next = node;}};/*** 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);*/

Java版本

class LRUCache {class LinkNode{int key, value;LinkNode pre, next;LinkNode(){key = 0;value = 0;pre = null;next = null;}LinkNode(int _key, int _value){key = _key;value = _value;pre = null;next = null;}}Map<Integer, LinkNode> cache = new HashMap<>();int size, capacity;LinkNode head = new LinkNode();LinkNode tail = new LinkNode();public LRUCache(int _capacity) {size = 0;capacity = _capacity;head.next = tail;tail.pre = head;}public int get(int key) {if(!cache.containsKey(key)) return -1;LinkNode node = cache.get(key);moveToHead(node);return node.value;}public void put(int key, int value) {if(!cache.containsKey(key)){LinkNode node = new LinkNode(key, value);cache.put(key, node);addToHead(node);if(++size > capacity){LinkNode tail = removeTail();cache.remove(tail.key);--size;}}else{LinkNode node = cache.get(key);node.value = value;moveToHead(node);}}void moveToHead(LinkNode node){removeNode(node);addToHead(node);}LinkNode removeTail(){LinkNode node = tail.pre;removeNode(node);return node;}void removeNode(LinkNode node){node.next.pre = node.pre;node.pre.next = node.next;}void addToHead(LinkNode node){node.pre = head;node.next = head.next;head.next.pre = node;head.next = node;}
}/*** 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);*/
http://www.xdnf.cn/news/14380.html

相关文章:

  • Vue学习001-创建 Vue 应用
  • anaconda安装教程
  • 板凳-------Mysql cookbook学习 (十--7)
  • 使用pinia代替vuex处理登录流程
  • 什么是扩展运算符?有什么使用场景?
  • 强化学习怎么入门?
  • Vue3 跨多个组件方法调用:简洁实用的解决方案
  • 人工智能基础知识笔记十:降维技术
  • cache的学习
  • 扣子开发平台 Agent 开发教程(一)
  • Adoquery 转AdoDataSet
  • LeetCode 1385.两个数组间的距离值
  • Kafka 可靠性保障:消息确认与事务机制(一)
  • vue3 +spring boot文件上传
  • 【Go语言-Day 1】扬帆起航:从零到一,精通 Go 语言环境搭建与首个程序
  • 操作系统核心名词解释--期末简答题快速复习
  • cuda编程笔记(2.5)--简易的应用代码
  • 利用 Python 爬虫获取 Amazon 商品详情:实战指南
  • HarmonyOS 探秘手记:我在 “鸿蒙星球” 的第一天
  • linux 常用工具的静态编译之二
  • 数字孪生赋能智慧城市大脑建设方案PPT(65页)
  • vscode通过ssh连接
  • 理解ES6中的Promise
  • SAP-增删改查
  • 中介者模式Mediator Pattern
  • 鸿蒙智行5月全系交付新车破4.4万辆,销量再创新高
  • FTP 并不适合用在两个计算机之间共享读写文件 为什么
  • 获取全国行政区划数据
  • Sklearn 机器学习 缺失值处理 过滤掉缺失值的行并统计
  • 大模型在垂直领域的应用:金融、医疗、教育等行业的创新案例分析