java
花开终为谢
学生
展开
-
Kafka生产者相关配置
kafka基础配置原创 2022-10-30 20:34:08 · 2444 阅读 · 0 评论 -
递归专项-114二叉树转为链表
递归专项二叉树转链表原创 2022-09-10 12:22:28 · 145 阅读 · 0 评论 -
图的深度优先遍历-两个顶点之间的最短路径
图的深度优先遍历原创 2022-09-04 18:37:56 · 666 阅读 · 0 评论 -
图的广度优先遍历——两个顶点之间的最短距离
图的广度优先遍历原创 2022-09-04 18:31:09 · 709 阅读 · 0 评论 -
递归-深度优先遍历-99. 恢复二叉搜索树
深度优先遍历,二叉搜索树原创 2022-08-28 23:40:55 · 154 阅读 · 0 评论 -
设计模式-状态模式
设计模式-状态模式原创 2022-07-17 13:55:51 · 125 阅读 · 0 评论 -
设计模式第一回
设计模式第一回原创 2022-07-15 00:21:34 · 89 阅读 · 0 评论 -
57. 插入区间
给你一个 无重叠的 ,按照区间起始端点排序的区间列表。在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)原创 2022-07-02 19:54:48 · 258 阅读 · 0 评论 -
二分查找专题1
题目1给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。示例 1:输入: nums = [-1,0,3,5,9,12], target = 9输出: 4解释: 9 出现在 nums 中并且下标为 4示例 2:输入: nums = [-1,0,3,5,9,12], target = 2输出: -1解释: 2 不存在 nums 中因此返回 -1提示:你可以假设 num.原创 2022-04-23 23:40:22 · 93 阅读 · 0 评论 -
单调栈系列-1124.表现良好的最长时间段
难度中等175收藏分享切换为英文接收动态反馈给你一份工作时间表 hours,上面记录着某一位员工每天的工作小时数。我们认为当员工一天中的工作小时数大于 8 小时的时候,那么这一天就是「劳累的一天」。所谓「表现良好的时间段」,意味在这段时间内,「劳累的天数」是严格 大于「不劳累的天数」。请你返回「表现良好时间段」的最大长度。示例 1:**输入:**hours = [9,9,6,0,6,6,9]**输出:**3**解释:**最长的表现良好时间段是 [9,9,6]。示例 2:**输入:**h.原创 2022-04-23 18:29:48 · 298 阅读 · 0 评论 -
单调栈-最大宽度坡
题目962. 最大宽度坡难度中等160收藏分享切换为英文接收动态反馈给定一个整数数组 A,坡是元组 (i, j),其中 i < j 且 A[i] <= A[j]。这样的坡的宽度为 j - i。找出 A 中的坡的最大宽度,如果不存在,返回 0 。示例 1:输入:[6,0,8,2,1,5]**输出:**4解释:最大宽度的坡为 (i, j) = (1, 5): A[1] = 0 且 A[5] = 5.示例 2:输入:[9,8,1,0,1,9,4,0,4,1]**输出:**7.原创 2022-04-05 21:37:33 · 725 阅读 · 0 评论 -
递归专题-二叉搜索树的后序遍历序列
题目剑指 Offer 33. 二叉搜索树的后序遍历序列输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。参考以下这颗二叉搜索树: 5/ \2 6/ 1 3示例 1:输入: [1,6,3,2,5]输出: false示例 2:输入: [1,3,2,6,5]输出: true提示:数组长度 <= 1000分析首先我们先看二叉搜索树的一些特点,第一点就是左子树的值都应.原创 2022-04-05 19:51:25 · 697 阅读 · 0 评论 -
单调栈-部分有序
题目面试题 16.16. 部分排序给定一个整数数组,编写一个函数,找出索引m和n,只要将索引区间[m,n]的元素排好序,整个数组就是有序的。注意:n-m尽量最小,也就是说,找出符合条件的最短序列。函数返回值为[m,n],若不存在这样的m和n(例如整个数组是有序的),请返回[-1,-1]。示例:输入: [1,2,4,7,10,11,7,12,6,7,16,18,19]输出: [3,9]提示:0 <= len(array) <= 1000000本题可以采用单调栈的思路,比如针对1,.原创 2022-04-03 23:39:45 · 484 阅读 · 0 评论 -
单调栈系列1
单调栈在一维数组中找第一个满足某种条件的数,这种feel的东西一看就是单调栈题目1/** * 题目Id:739 * 题目:每日温度 * 内容: //给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指在第 i 天之后,才会有更高的温度//。如果气温在这之后都不会升高,请在该位置用 0 来代替。 //// //// 示例 1: //// //输入: temperatures = [73,74,75,71.原创 2022-03-27 17:56:11 · 237 阅读 · 0 评论 -
单调栈-每日温度
/** * 题目Id:739 * 题目:每日温度 * 内容: //给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指在第 i 天之后,才会有更高的温度//。如果气温在这之后都不会升高,请在该位置用 0 来代替。 //// //// 示例 1: //// //输入: temperatures = [73,74,75,71,69,72,76,73]//输出: [1,1,4,2,1,1,0,0]//.原创 2022-03-26 12:30:59 · 185 阅读 · 0 评论 -
并查集基础学习
图例简单描述一下:代码描述:package data.structure.unionfind;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.Stack;public class UnionSet<V> { class Node<V> { private V val; public Node(V v..原创 2022-03-13 11:50:49 · 348 阅读 · 0 评论 -
P387字符串中的第一个唯一字符
题目字符串中的第一个唯一字符给定一个字符串 s ,找到 它的第一个不重复的字符,并返回它的索引 。如果不存在,则返回 -1 。示例 1:输入: s = “leetcode”输出: 0示例 2:输入: s = “loveleetcode”输出: 2示例 3:输入: s = “aabb”输出: -1解法一:使用字符数组存储字符索引因为题目全是小写字母,这里就可以使用26范围大小的数组来完成字典映射,比如字符a,对应的数组位置为’a’-‘a’ = 0, 数组位置记录原始字符串数字字符原创 2022-02-27 14:49:28 · 63 阅读 · 0 评论 -
图结构-997
这个其实就是图里面的星形网络,中心点就是小镇法官。 他的特点就是入度是n - 1, 出度是0。 所以对应的java代码如下:class Solution { public int findJudge(int n, int[][] trust) { int[] inDegrees = new int[n + 1]; int[] outDegrees = new int[n + 1]; for (int[] edge : trust) { .原创 2022-02-23 00:05:54 · 7420 阅读 · 0 评论 -
图-133. 克隆图
题目:本题属于图这种数据结构的一个题目,可以通过深度优先遍历来求解。因为考虑到无向图,为了完成整张图的遍历,我们需要记录访问过得节点,以防止重复遍历,陷入死循环之中。Java实现代码如下:class Node { public int val; public List<Node> neighbors; public Node() { val = 0; neighbors = new Arra原创 2022-02-21 23:28:50 · 194 阅读 · 0 评论 -
Volatile可见性问题
public class VolatileVisualTest { // volatile 无法保证原子性 public static final int clientTotal = 1000; public static final int threadTotal = 200; private static int i = 0; public static void main(String[] args) { Thread t1 = ne原创 2021-12-12 13:19:43 · 311 阅读 · 0 评论 -
递归专项-257. 二叉树的所有路径
题目257. 二叉树的所有路径给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。叶子节点 是指没有子节点的节点。 示例 1:输入:root = [1,2,3,null,5]输出:["1->2->5","1->3"]示例 2:输入:root = [1]输出:["1"]递归带返回值:code :class Solution { public List<String> binaryTreePath.原创 2021-12-02 00:04:50 · 198 阅读 · 0 评论 -
递归专项-404. 左叶子之和
题目该题目也要注意要计算的是叶子节点。 当只有一个根节点的时候,这时候实际上是不能算进内的。code:class Solution { public int sumOfLeftLeaves(TreeNode root) { return sumOfLeftLeavesDg(root, -1); } private int sumOfLeftLeavesDg(TreeNode cur, int direction) { // 一定是先会递归到叶子节.原创 2021-11-28 22:59:21 · 158 阅读 · 0 评论 -
递归专项-112. 路径总和
题目本题的一个注意点是计算的路径是从根节点到叶子节点的路径和,结尾是叶子节点(不能是根节点)code:class Solution { public boolean hasPathSum(TreeNode root, int targetSum) { return hasPathSumDg(root, targetSum); } private boolean hasPathSumDg(TreeNode cur, int sum) { .原创 2021-11-28 22:40:34 · 267 阅读 · 0 评论 -
递归专项-110. 平衡二叉树
题目code:class Solution { public boolean isBalanced(TreeNode root) { isBalancedDg(root); return flag; } boolean flag = true; private int isBalancedDg(TreeNode root) { if (root == null) { return 0; .原创 2021-11-28 22:17:07 · 137 阅读 · 0 评论 -
递归专项-222. 完全二叉树的节点个数
题目code:class Solution { public int countNodes(TreeNode root) { return countNodesDg(root); } private int countNodesDg(TreeNode root) { if (root == null) { return 0; } return countNodes(root.le.原创 2021-11-28 21:51:14 · 49 阅读 · 0 评论 -
递归专项-101. 对称二叉树
题目给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3该题目属于二叉树递归练习中的一道简单题。本质是处理镜像对称问题。 思路代码如下:class Solution { public boole.原创 2021-11-28 21:29:06 · 52 阅读 · 0 评论 -
递归专项-N叉树最大深度
题目该题目是简单的一道递归题目,针对任意一个子树,分别遍历其根节点的所有孩子节点的每个深度,取出最大的那个深度即可。代码如下:import common.NxNode;public class P559MaximumDepthOfNAryTree { public static void main(String[] args) { Solution solution = new P559MaximumDepthOfNAryTree().new Solution();.原创 2021-11-28 20:08:59 · 110 阅读 · 0 评论 -
递归专项- 记忆化搜索397. 整数替换
题目给定一个正整数 n ,你可以做如下操作:如果 n 是偶数,则用 n / 2替换 n 。如果 n 是奇数,则可以用 n + 1或n - 1替换 n 。n 变为 1 所需的最小替换次数是多少?示例 1:输入:n = 8输出:3解释:8 -> 4 -> 2 -> 1示例 2:输入:n = 7输出:4解释:7 -> 8 -> 4 -> 2 -> 1或 7 -> 6 -> 3 -> 2 -> 1示例 3:输入原创 2021-11-21 22:21:52 · 168 阅读 · 0 评论 -
递归专项-前缀树应用P677MapSum
题目实现一个 MapSum 类,支持两个方法,insert 和 sum:MapSum() 初始化 MapSum 对象void insert(String key, int val) 插入 key-val 键值对,字符串表示键 key ,整数表示值 val 。如果键 key 已经存在,那么原来的键值对将被替代成新的键值对。int sum(string prefix) 返回所有以该前缀 prefix 开头的键 key 的值的总和。 示例:输入:["MapSum", "insert", .原创 2021-11-18 22:57:13 · 139 阅读 · 0 评论 -
递归专项-给定一个二叉树计算 整个树的坡度
题目给定一个二叉树,计算 整个树 的坡度 。一个树的 节点的坡度 定义即为,该节点左子树的节点之和和右子树节点之和的 差的绝对值 。如果没有左子树的话,左子树的节点之和为 0 ;没有右子树的话也是一样。空结点的坡度是 0 。整个树 的坡度就是其所有节点的坡度之和。示例 1:输入:root = [1,2,3]输出:1解释:节点 2 的坡度:|0-0| = 0(没有子节点)节点 3 的坡度:|0-0| = 0(没有子节点)节点 1 的坡度:|2-3| = 1(左子树就是左子节点,.原创 2021-11-18 22:48:17 · 111 阅读 · 0 评论 -
递归专项-前缀树应用211. 添加与搜索单词 - 数据结构设计
题目:请你设计一个数据结构,支持 添加新单词 和 查找字符串是否与任何先前添加的字符串匹配 。实现词典类 WordDictionary :WordDictionary() 初始化词典对象void addWord(word) 将 word 添加到数据结构中,之后可以对它进行匹配bool search(word) 如果数据结构中存在字符串与 word 匹配,则返回 true ;否则,返回 false 。word 中可能包含一些 '.' ,每个 . 都可以表示任何一个字母。 示例:输入.原创 2021-11-14 18:31:48 · 73 阅读 · 0 评论 -
递归专项-数据结构-前缀树
前缀树前缀树是一种特殊的树,非常适合于处理一些字符串相关的问题。使用了前缀树其查询性能与有多少个字符串无关,而仅仅与字符串的长度有关。针对与一些英语单词或者一些有字符组成的串,往往长度实际情况下并不是很长,那么这种就特别适合于使用前缀树进行查询或者检索,性能会比较好。但是往往提升这么好的查询性能,就需要牺牲掉空间复杂度,因此前缀树Trie的问题也是在与空间占用较大。一棵形象的前缀树如下所示:我们使用递归方式来实现前缀树的插入操作, 查询操作,检索操作。插入操作的递归方式如下:public v.原创 2021-11-14 17:45:54 · 635 阅读 · 0 评论 -
递归专项-数据结构-线段树
线段树比如我们有一个大小为6的数组,其索引为0,1,2,3,4,5,那么我们就可以构建出如下的一颗线段树,下图所示:考虑到一棵完全二叉树,假设右k层,则其总数为2^0 + 2 ^1 +… + 2 ^k= 2^(k + 1) - 1,所以针对一棵线段树,其最好情况下是一棵满二叉树,这时候线段是的大小为2 * n即可,但是往往由于数据因素可能会变成一课完全二叉树,而不是恰好就是满二叉树,这时候如果需要涵盖所有的数据,就需要开辟2 * (2 * n) 才行【即多开一层空间】所以根据上面的阐述,假.原创 2021-11-13 20:20:01 · 496 阅读 · 0 评论 -
递归专项-100. 相同的树
题目递归的不断判断是否相等即可,比较容易。 代码如下:class Solution { public boolean isSameTree(TreeNode p, TreeNode q) { return dgCheckSame(p, q); } private boolean dgCheckSame(TreeNode p, TreeNode q) { if (p == null && q == null) { .原创 2021-11-08 23:19:16 · 38 阅读 · 0 评论 -
普通题-299. 猜数字游戏
题目先进行比对找出相同并且位置一致的值,然后针对剩下的值通过一个’0’-'9’的数组进行比对,针对原始字符串没有一个值则对应的数字字符的个数+1,然后guess的字符则对对应的数字字符的个数-1. code 代码如下:class Solution { public String getHint(String v1, String v2) {int sameValueAndPos = 0; StringBuilder sub1 = new StringBuilder();.原创 2021-11-08 22:37:21 · 2152 阅读 · 0 评论 -
递归专项-不同的二叉搜索树
题目本地思路是先通过递归回溯法进行不断地组合,然后针对每次返回的组合结果进行copy备份,并进行去重,留下去重后的二叉搜索树。递归的核心思路:递归核心代码如下:/** * * @param n : 代表总共进行多少次递归 * @param node : 符合条件的头结点 * @param index: 当前到了第几次了 * @param arr: 用于定义已经遍历过得结点 * @par.原创 2021-11-07 17:02:31 · 98 阅读 · 0 评论 -
单调栈问题-下一个更大元素 I
题目使用单调栈来进行维护所有的下一个第一个最大值代码:class Solution { public int[] nextGreaterElement(int[] nums1, int[] nums2) { Stack<Integer> stack = new Stack<>(); Map<Integer, Integer> result = new HashMap<>(); for (i.原创 2021-10-26 23:16:56 · 92 阅读 · 0 评论 -
递归专项-合并两个有序的单链表
题目递归解法:/** * 题目Id:剑指 Offer 25 * 题目:合并两个排序的链表 * 内容: //输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。 //// 示例1: //// 输入:1->2->4, 1->3->4//输出:1->1->2->3->4->4 //// 限制: //// 0 <= 链表长度 <= 1000 //// 注意:本题与主站 21 题相同:htt原创 2021-10-23 20:28:30 · 161 阅读 · 0 评论 -
递归专项-链表问题
题目code/** * 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原创 2021-10-23 20:28:19 · 37 阅读 · 0 评论 -
递归专项-链表求和问题
题目:递归不断求解。需要考虑是否结果有进位和借位代码如下:class Solution { public ListNode addTwoNumbers(ListNode l1, ListNode l2) { ListNode dg = dg(l1, l2, 0); return dg; } private ListNode dg(ListNode l1, ListNode l2, int jiewei) { if (l.原创 2021-10-23 20:27:44 · 262 阅读 · 0 评论