![](https://img-blog.csdnimg.cn/20190918140158853.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法笔记题
本栏是本人在LeetCode算法题中记录的比较经典的体型、思路有自己的、也有总结别人的
冬雪是你
正就读于成都大学计算机学院软件工程专业
展开
-
Java实现LRU
原题链接 题目 设计和构建一个“最近最少使用”缓存,该缓存会删除最近最少使用的项目。缓存应该从键映射到值(允许你插入和检索特定键对应的值),并在初始化时指定最大容量。当缓存被填满时,它应该删除最近最少使用的项目。 它应该支持以下操作: 获取数据 get 和 写入数据 put 。 获取数据 get(key) - 如果密钥 (key) 存在于缓存中,则获取密钥的值(总是正数),否则返回 -1。 写入数据 put(key, value) - 如果密钥不存在,则写入其数据值。当缓存容量达到上限时,它应该在写入新数据原创 2021-08-26 16:09:31 · 103 阅读 · 0 评论 -
调整数组顺序使奇数位于偶数前面-牛客-JZ13
原题链接 题目 描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 示例2 输入: [2,4,6,5,7] 返回值: [5,7,2,4,6] Code import java.util.*; public class Solution { // 插入排序思想,把前面的奇数看成有序数组,遇到奇数就插入到前面有序队列中 public int[] reOrderA原创 2021-08-11 00:01:14 · 80 阅读 · 0 评论 -
把数组排成最小的数-牛客-JZ32
原题链接 题目 描述 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 示例1 输入: [3,32,321] 返回值: “321323” Code import java.util.*; public class Solution { public String PrintMinNumber(int [] numbers) { String[] ans =原创 2021-08-10 10:25:55 · 91 阅读 · 0 评论 -
复杂链表的复制-牛客JZ25
原题链接 原题: 描述 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针random指向一个随机节点),请对此链表进行深拷贝,并返回拷贝后的头结点。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)。 下图是一个含有5个结点的复杂链表。图中实线箭头表示next指针,虚线箭头表示random指针。为简单起见,指向null的指针没有画出。 示例: 输入:{1,2,3,4,5,3,5,#,2,#} 输出:{1,2,3,4,5,3,5,#,2,#} 解析原创 2021-08-09 10:01:09 · 136 阅读 · 0 评论 -
省份数量-力扣-并查集
原题链接 题目: 有 n 个城市,其中一些彼此相连,另一些没有相连。如果城市 a 与城市 b 直接相连,且城市 b 与城市 c 直接相连,那么城市 a 与城市 c 间接相连。 省份 是一组直接或间接相连的城市,组内不含其他没有相连的城市。 给你一个 n x n 的矩阵 isConnected ,其中 isConnected[i][j] = 1 表示第 i 个城市和第 j 个城市直接相连,而 isConnected[i][j] = 0 表示二者不直接相连。 返回矩阵中 省份 的数量。 示例 1: 输入:is原创 2021-08-08 16:22:16 · 92 阅读 · 0 评论 -
二叉树迭代遍历非递归Java
前序遍历 public static void pre(TreeNode root) { Stack<TreeNode> stack = new Stack<>(); while (root != null || !stack.isEmpty()) { while (root != null) { System.out.printf(root.val + " ");原创 2021-08-07 14:53:38 · 75 阅读 · 0 评论 -
648.单词替换(使用前缀树实现)
原题题目: 示例: 利用前缀树实现(Java) 构建前缀树 /** * 前缀树 */ class Trie { private TreeNode root; public Trie(){ this.root=new TreeNode(); } /** * 构建前缀树 * @param word */ public void insert(String word){ TreeNode node=r原创 2020-10-15 17:36:06 · 97 阅读 · 0 评论 -
78.子集
原题链接 思路与算法 代码 package LeetCode.位运算.Subsets; import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * 78. 子集 */ public class Solution { public static void main(String[] args) { System.out.println(Arrays.toString(n原创 2020-09-20 15:25:59 · 59 阅读 · 0 评论 -
99恢复二叉搜索树
原题链接 二叉搜索树中的两个节点被错误地交换。 请在不改变其结构的情况下,恢复这棵树。 package LeetCode.BinarySearch.RecoverTree; import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * 99 恢复二叉搜索树 */ public class Solution { public static void main(String[] args原创 2020-09-20 11:48:51 · 88 阅读 · 0 评论 -
100.相同的树(二叉树)
原题题目LeetCode原题链接 树结点 class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; } } 解法一: 二叉树的前序遍历法(递归) /** * 递归前序遍历法 * @param p * @param q * @return */ public static boolean isSameTre原创 2020-05-26 16:19:41 · 163 阅读 · 0 评论 -
42.接雨水LeetCode
题目来源LeetCode第42题 根据别人大佬思想,自己慢慢领悟后总结,java编写出来的四个解该题的方法,我也是菜鸟一枚,写了很久的,所以做个笔记大家分享,大家指出不足,麻烦点个赞吧,谢谢 首先是用于测试的主函数 public static void main(String[] args) { int[] height=new int[]{6,8,5,0,0,6,5};...原创 2020-03-25 11:53:47 · 144 阅读 · 0 评论