![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
禹畅
这个作者很懒,什么都没留下…
展开
-
Lru算法
如下是lru缓存算法,既是常考算法,也是程序中的重要算法。 lru算法可以用linkedhashmap去实现,但是面试官考的时候是要自己去构造的。 思路逻辑 // key 映射到 Node(key, val) HashMap<Integer, Node> map; // Node(k1, v1) <-> Node(k2, v2)… DoubleList cache; int get(int key) { if (key 不存在) { return -1; } else { 将数据 (原创 2021-08-18 21:01:30 · 146 阅读 · 0 评论 -
关于图的问题
这是leetcode210题,课程表的题目。是关于图的。这题还是比较经典的。下面是bfs广域搜索算法的解答。 这道题目用了有向无环图的拓扑排序,或者说这就是拓扑排序的标准java版。 aov 从一个入度为0的节点开始。将这个节点放入队列或者栈(只是顺序不同)。然后去除这个节点(vertex)所引出的边(edge)。再去找入度为0的点,放入队列,取消边,直至最后。 class Solution { // 存储有向图 List<List<Integer>> edges;原创 2021-08-18 18:44:37 · 87 阅读 · 0 评论 -
二叉树相关
二叉树 二叉树是树的一种,每个节点最多只能有两个子节点。左子树右子树。(左孩子,右孩子)。 二叉树的建立: 创建节点 在package tree; public class NodeTree { //定义数据域 int data; //定义左子树 NodeTree leftChild; //定义右子树 NodeTree rightChild; public NodeTree(int data) { data = -1; leftChild = null; rightChi原创 2021-08-08 08:30:13 · 59 阅读 · 0 评论 -
数据录入hashmap
关于Hashmap的一些记录 hashmap 中containkey 方法 如下是一段把一串无序集合录入hashmap并记录次数的方法 HashMap<Integer,Integer> map = new HashMap(); for(int num: nums){ if(map.containsKey(num)){ map.put(num,map.get(num)+1); }else{原创 2021-08-07 16:31:36 · 150 阅读 · 0 评论 -
滑动窗口问题
滑动窗口问题 记录一下滑动窗口问题的解法,给你一个int[] nums, int k. 思路1 建立一个queue,长度为k。遍历数组nums,往queue里面填值,要加入的值小于等于队尾的时候就可以加入,大于就清空queue,存入新加入的值,这样就保证了queue的单调递减。每次只需要输出队列的首位就可以了。 思路2 直接用窗口数组与integer.min_value 求最大值。记录下直接付给result数组。 思路3 建立一个treemap,用containskey录入元素。保持treemap里的“元素原创 2021-08-08 00:02:13 · 55 阅读 · 0 评论