回顾前面刷过的算法(3)
创始人
2024-11-14 19:34:37
0

今天简单描述了一下算法思路并手敲了一下下面三个算法,算法题目是刷不完的,但是解题思想是有限的,我们需要学习的就是解题思想,代码展示如下

    //打家劫舍     //思路: 定义一个dp[i],表示偷前 i - 1 个房屋能偷到的最大金额     //则有递推关系式 dp[i] = max(dp[i - 1], dp[i - 2] + nums[i - 1])     public int rob(int[] nums) {         if (nums == null || nums.length == 0) {             return 0;         }         int pre = 0, curr = nums[0];         for (int i = 2; i <= nums.length; i++) {             int temp = Math.max(curr, pre + nums[i - 1]);             pre = curr;             curr = temp;         }         return curr;     }       //多数元素     //思路: 方法有很多,这里采用的是每次消除两个不同元素,因为多数元素的数量是大于总数的一半     //所以消除到最后,剩余的元素一定是多数元素     public int majorityElement(int[] nums) {         if (nums == null || nums.length == 0) {             return -1;         }         int count = 0, currentNum = -1;         for (int num : nums) {             if (count == 0) {                 currentNum = num;                 count++;             } else {                 if (num == currentNum) {                     count++;                 } else {                     count--;                 }             }         }         return currentNum;     }             //LRU缓存     //思路: 采用双链表+HashMap实现,hashMap存储key与结点的对应关系便于查找,     //双链表存储结点便于增删     class LRUCache {         private int size;         private final int capacity;         private final DLinkedNode head;         private final DLinkedNode tail;         private final Map cache = new HashMap<>();          class DLinkedNode {             int key;             int value;             DLinkedNode next;             DLinkedNode pre;              public DLinkedNode() {             }              public DLinkedNode(int _key, int _value) {                 key = _key;                 value = _value;             }         }          public LRUCache(int capacity) {             this.size = 0;             this.capacity = capacity;             head = new DLinkedNode();             tail = new DLinkedNode();             head.next = tail;             tail.pre = head;         }          public int get(int key) {             DLinkedNode node = cache.get(key);             if (node == null) {                 return -1;             }             //因为操作过,需要把它移动到双链表头部             moveToHead(node);             return node.value;         }          public void put(int key, int value) {             DLinkedNode node = cache.get(key);             if (node == null) {                 DLinkedNode newNode = new DLinkedNode(key, value);                 cache.put(key, newNode);                 addToHead(newNode);                 size++;                 if (size > capacity) {                     DLinkedNode temp = removeTail();                     cache.remove(temp.key);                     size--;                 }             } else {                 node.value = value;                 moveToHead(node);             }         }          private void moveToHead(DLinkedNode node) {             removeNode(node);             addToHead(node);         }          private void removeNode(DLinkedNode node) {             node.next.pre = node.pre;             node.pre.next = node.next;         }          private void addToHead(DLinkedNode node) {             node.next = head.next;             node.pre = head;             head.next.pre = node;             head.next = node;         }          private DLinkedNode removeTail() {             DLinkedNode temp = tail.pre;             removeNode(temp);             return temp;         }     }

相关内容

热门资讯

第7分钟了解(wpk俱乐部)黑... 第7分钟了解(wpk俱乐部)黑科技透明挂辅助app(透视)详细教程(2026已更新)(哔哩哔哩);A...
记者揭秘!"德州之星... 记者揭秘!"德州之星有app辅助"详细外挂透明挂辅助安装-总是存在有挂(哔哩哔哩);1、不需要AI权...
透视美元局!wpk辅助插件(透... 透视美元局!wpk辅助插件(透视)底牌透视挂辅助神器(可靠开挂辅助普及教程)-哔哩哔哩;wpk辅助插...
1.9分钟了解"we... 《1.9分钟了解"wepoke开发者"详细外挂透明挂辅助插件-真是真的有挂(哔哩哔哩)》 wepok...
第十分钟了解(Wepoke程序... 第十分钟了解(Wepoke程序)黑科技透明挂辅助插件(透视)新2025教程(2021已更新)(哔哩哔...
透视了解!pokemmo脚本辅... 透视了解!pokemmo脚本辅助下载(透视)底牌透视挂辅助程序(可靠开挂辅助第三方教程)-哔哩哔哩;...
第一分钟了解(wepoke辅助... 第一分钟了解(wepoke辅助透视)外挂智能ai辅助下载(透视)科技教程(2024已更新)(哔哩哔哩...
教程辅助"微扑克发牌... 教程辅助"微扑克发牌规律性总结"详细外挂透明挂辅助神器-原生有挂(哔哩哔哩);大家肯定在之前微扑克发...
透视透视!hhpoker底牌透... 透视透视!hhpoker底牌透视脚本(透视)底牌透视挂辅助程序(可靠开挂辅助安装教程)-哔哩哔哩;亲...
8分钟了解(aapoker透明... 8分钟了解(aapoker透明挂)外挂透明挂辅助科技(透视)第三方教程(2026已更新)(哔哩哔哩)...