- 博客(288)
- 资源 (6)
- 问答 (8)
- 收藏
- 关注
原创 【Java - J - 68-Ⅰ 】二叉搜索树的最近公共祖先
题目描述 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5] lc 实现 方法二:一次遍历 思路与算法: –我们从根节点开始遍历; –如果当前节点的值大于 pp 和 qq 的值,说明 pp 和 qq 应该
2021-05-02 15:32:25
352
1
原创 【Java - L - 0009】e - 回文数
题目描述 给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。 示例 1: 输入:x = 121 输出:true lc练习 实现-m public boolean isPalindrome(int x) { if (x < 0) return false; if (x >= 0 && x <=
2021-04-23 16:53:08
400
原创 【Java - L - 0074】m - 搜索二维矩阵
题目描述 编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性: 每行中的整数从左到右按升序排列。 每行的第一个整数大于前一行的最后一个整数。 lc练习 实现 J - 04】二维数组中的查找 ...
2021-04-23 16:04:27
220
原创 【Java - L - 0082】- m - 删除排序链表中的重复元素 II
题目描述 https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list-ii/ J - 18-2】删除链表的节点-删除链表中重复的节点 实现
2021-04-22 18:39:26
126
原创 【Java - L - 0083】- e - 删除排序链表中的重复元素(不含包)
问题描述 存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除所有重复的元素,使每个元素 只出现一次 。 返回同样按升序排列的结果链表。 删除-不包含本节点 J - 18】删除链表的节点-删除链表中重复的节点-删除本节点 实现 public ListNode deleteDuplicates(ListNode head) { ListNode node = head; while (node != null && node.next !
2021-04-22 18:01:08
116
原创 【Java - J - --】交替打印字母数字
实现-condition static boolean flag = true; public static void main(String[] args) { Lock lock = new ReentrantLock(); Condition letter = lock.newCondition(); Condition num = lock.newCondition(); new Thread(new Runnabl
2021-04-20 11:37:26
219
原创 【Java - J - 36】二叉搜索树与双向链表
题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。 lc练习 实现
2021-04-19 02:36:39
138
原创 架构设计面试精讲
课程:《架构设计面试精讲》刘海丰(拉勾) 一、架构原理与技术认知 01 技术认知 1 架构设计的4点理解? 架构拆分其实是管理在技术上提效的一种手段 –**为什么做架构拆分?**通常最直接目的就是做系统之间解耦、子系统之间解耦,或模块之间的解耦。 –**为什么要做系统解耦?**系统解耦后,使得原本错综复杂的调用逻辑能有序地分布到各个独立的系统中,从而使得拆封后的各个系统职责更单一,功能更为内聚。 –**为什么要做职责单一?**因为职责单一的系统功能逻辑的迭代速度会更快,会提高研发团队响应业务需求的速度,
2021-04-19 02:19:35
1719
4
原创 设计模式-工厂模式
文章目录基本类一、简单工厂1 图例2 实现3 适用4 优缺点二、工厂方法模式1 实例2 实现3 优缺点三、抽象工厂模式1 实例2 实现3 优缺点 《Spring源码轻松学 一课覆盖Spring核心知识点》翔仔(慕课) tips:抽象工厂管理多个controller、service 基本类 基本类和接口 public interface Mouse{ void sayHi(); } public class DellMouse implements Mouse{
2021-04-19 01:25:35
165
原创 【Java - L - 0155】- e - 最小栈
题目描述 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 push(x) —— 将元素 x 推入栈中。 pop() —— 删除栈顶的元素。 top() —— 获取栈顶元素。 getMin() —— 检索栈中的最小元素。 lc练习 J - 30】包含min函数的栈 实现 辅助栈 class MinStack { /** initialize your data structure here. */ Stack<Integer> A, B;
2021-04-18 18:36:56
139
原创 【Java - L - 0234】- e - 回文链表
题目描述 请判断一个链表是否为回文链表。 示例 1: 输入: 1->2 输出: false 示例 2: 输入: 1->2->2->1 输出: true lc练习 实现1-数组+指针 方法一:将值复制到数组中后用双指针法 一共为两个步骤: 复制链表值到数组列表中。 使用双指针法判断是否为回文。 复杂度分析 时间复杂度:O(n),其中 n 指的是链表的元素个数。 空间复杂度:O(n),其中 n 指的是链表的元素个数,我们使用了一个数组列表存放链表的元素值。 public bo
2021-04-18 18:05:59
169
原创 【Java - L - 0113】- m - 路径总和 II
题目描述 给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。 叶子节点 是指没有子节点的节点。 输入:root = [5,4,8,11,null,13,4,7,2,null,null,5,1], targetSum = 22 输出:[[5,4,11,2],[5,8,4,5]] lc练习 实现 参考:lc 复杂度分析 时间复杂度:O(N^2) n的平方 空间复杂度:O(N) List<List<Integ
2021-04-18 17:21:41
187
原创 【Java - L - 0169】- e - 多数元素
题目描述 给你二叉树的根节点 root ,返回它节点值的 前序 遍历。 lc 实现-递归 执行结果: 执行用时:0 ms, 在所有 Java 提交中击败了100.00%的用户 内存消耗:36.4 MB, 在所有 Java 提交中击败了97.57%的用户 List<Integer> res = new ArrayList<>(); public List<Integer> preorderTraversal(TreeNode root) {
2021-04-18 16:06:02
153
原创 【Java - L - 0718】- m - 最长重复子数组
题目描述 给两个整数数组 A 和 B ,返回两个数组中公共的、长度最长的子数组的长度。 输入: A: [1,2,3,2,1] B: [3,2,1,4,7] 输出:3 解释: 长度最长的公共子数组是 [3, 2, 1] 。 lc 实现1-动态规划 参考:1|2 思路: –A 、B数组各抽出一个子数组,单看它们的末尾项,如果它们俩不一样,则公共子数组肯定不包括它们俩——以它们俩为末尾项形成的公共子数组的长度为0:dp[i][j] = 0 –如果它们俩一样,以它们俩为末尾项的公共子数组,长度保底为1——dp[i
2021-04-18 15:56:47
201
原创 【Java - L - 0144】- m - 二叉树的前序遍历
题目描述 给你二叉树的根节点 root ,返回它节点值的 前序 遍历。 lc 实现-递归 List<Integer> res = new ArrayList<>(); public List<Integer> preorderTraversal(TreeNode root) { traversal(root); return res; } public void traversal(TreeNode ro
2021-04-10 20:03:38
163
原创 【Java - L - 0110】- e - 平衡二叉树
题目描述 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。 lc J - 55】二叉树的深度_平衡二叉树 实现 public boolean isBalanced(TreeNode root) { return getDepth(root) != -1; } public int getDepth(TreeNode root) { if (root =
2021-04-10 19:27:45
114
原创 【Java - L - 0704】- e - 二分查找
题目描述 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 示例 1: 输入: nums = [-1,0,3,5,9,12], target = 9 输出: 4 解释: 9 出现在 nums 中并且下标为 4 lc 实现 //时间复杂度:O(logN)。空间复杂度:O(1)。 public int search(int[] nums, int target) {
2021-04-10 18:11:12
163
原创 【Java - L - 0300】m - x - 最长递增子序列
题目描述 给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。 示例 1: 输入:nums = [10,9,2,5,3,7,101,18] 输出:4 解释:最长递增子序列是 [2,3,7,101],因此长度为 4 。 lc 实现-dp public int lengthOfLIS(int[] nums) { if (nums == null || nums.length == 0) { return 0; } i
2021-04-09 11:34:25
188
原创 【Java - L - 0070】- e - 爬楼梯
题目描述 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数。 示例 1: 输入: 2 输出: 2 解释: 有两种方法可以爬到楼顶。 1 阶 + 1 阶 2 阶 lc J - 10】斐波那列数列 J 10- II. 青蛙跳台阶问题 实现3-dp变量 public int climbStairs(int n) { if (n <= 0) return 0; if
2021-04-07 22:56:58
94
原创 【Java - L - 0260】m - 只出现一次的数字 III
题目描述 给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。你可以按 任意顺序 返回答案。 进阶:你的算法应该具有线性时间复杂度。你能否仅使用常数空间复杂度来实现? 示例 1: 输入:nums = [1,2,1,3,2,5] 输出:[3,5] 解释:[5, 3] 也是有效的答案。 lc 实现 异或 J - 56】数组中数字出现的次数_数组中只出现一次的两个数字 ...
2021-04-07 18:03:21
88
原创 【Java - L - 0137】m - 只出现一次的数字 II (其他三次)
题目描述 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现了三次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? 示例 1: 输入: [2,2,3,2] 输出: 3 lc 实现 J - 56】数组中数字出现的次数_数组中唯一出现一次的数字 ...
2021-04-07 17:16:20
131
原创 【Java - L - 0136】e - 只出现一次的数字(其他两次)
题目描述 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? 示例 1: 输入: [2,2,1] 输出: 1 lc 实现 异或 class Solution { public int singleNumber(int[] nums) { if (nums == null || nums.length == 0) {
2021-04-07 16:41:49
94
原创 【Java - L - 0033】- m - 搜索旋转排序数组
题目描述 整数数组 nums 按升序排列,数组中的值 互不相同 。 在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k+1], …, nums[n-1], nums[0], nums[1], …, nums[k-1]](下标 从 0 开始 计数)。例如, [0,1,2,4,5,6,7] 在下标 3 处经旋转后可能变为 [4,5,6,7,0,1,2] 。 给你 旋转后 的数组 nums 和一个
2021-03-30 20:19:09
102
原创 【Java-zookeeper】学习总结
什么是zk 什么是ZooKeeper? 1. 基本概念 1)总结 – ZooKeeper主要服务于分布式系统,可以用ZooKeeper来做:统一配置管理、统一命名服务、分布式锁、集群管理。 – 使用分布式系统就无法避免对节点管理的问题(需要实时感知节点的状态、对节点进行统一管理等等),而由于这些问题处理起来可能相对麻烦和提高了系统的复杂性,ZooKeeper作为一个能够通用解决这些问题的中间件就应运而生了。 2)数据结构 ZooKeeper的数据结构,跟Unix文件系统非常类似,可以看做是一颗树
2021-03-25 23:48:08
6589
1
原创 【Java - L - 0200】m - x - 岛屿数量
题目描述 给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外,你可以假设该网格的四条边均被水包围。 示例 1: 输入:grid = [ [“1”,“1”,“1”,“1”,“0”], [“1”,“1”,“0”,“1”,“0”], [“1”,“1”,“0”,“0”,“0”], [“0”,“0”,“0”,“0”,“0”] ] 输出:1 lc 实现 ** 深度优先遍历dfs:** 时间复杂度:
2021-03-23 16:30:51
132
原创 【Java - L - 0054】m - x - 螺旋矩阵
题目描述 lc 29】顺时针打印矩阵 实现 public List<Integer> spiralOrder(int[][] matrix) { List<Integer> res = new ArrayList<>(); if (matrix == null || matrix.length == 0 || matrix[0].length == 0) return res; int l
2021-03-23 15:55:48
100
原创 【Java - L - 0199】m - x - 二叉树的右视图
题目描述 给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 示例: 输入: [1,2,3,null,5,null,4] 输出: [1, 3, 4] 解释: 1 <— / 2 3 <— \ 5 4 <— lc 实现1 BFS --层次遍历 利用广度优先搜索进行层次遍历,记录下每层的最后一个元素。 public List<Integer> righ
2021-03-23 15:26:42
127
原创 【Java - D】重写TreeMap和sort
题目描述 统计频率,并按序输出 实现 public class Solution { public static void sortValue(int[] nums) { TreeMap<Integer, Integer> map = new TreeMap<>(new Comparator<Integer>() { @Override public int compare(Integer o1, I
2021-03-22 14:52:43
302
原创 【Java - L - 0088】- e - 合并两个有序数组
题目描述 给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。 初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 的空间大小等于 m + n,这样它就有足够的空间保存来自 nums2 的元素。 示例 1: 输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3 输出:[1,2,2,3,5,6] lc J - 25】合并两个排序的链表 实
2021-03-21 17:46:02
90
原创 【Java - L - 0094】- m - 二叉树的中序遍历
题目描述 给定一个二叉树的根节点 root ,返回它的 中序 遍历。 lc 实现 递归 时间复杂度:O(n),其中 n 为二叉树节点的个数。二叉树的遍历中每个节点会被访问一次且只会被访问一次。 空间复杂度:O(n)。空间复杂度取决于递归的栈深度,而栈深度在二叉树为一条链的情况下会达到 O(n) 的级别。 class Solution { List<Integer> res = new ArrayList<>(); public List<Integer>
2021-03-21 16:58:57
122
原创 【Java - L - 0141】- e - 环形链表
题目描述 给定一个链表,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。 如果链表中存在环,则返回 true 。 否则,返回 false 。 lc J - 23】链表中环的入口节点 实现 O(N) O(N) public boolean h
2021-03-21 16:34:49
107
原创 【Java - L - 0236】m - x - 二叉树的最近公共祖先
题目描述 lc J - 68-Ⅱ】树中两个节点的最低公共祖先 实现 同68.2
2021-03-21 13:26:18
100
原创 【Java - L - 0138】- m - 复制带随机指针的链表
问题描述 lc J - 35】复杂链表的复制–注意最后一段不一样 实现 思路可看:jz35 时间复杂度:O(N)。 空间复杂度:O(1)。 class Solution { public Node copyRandomList(Node head) { if (head == null) { return null; } Node node = head;
2021-03-21 02:54:38
192
图片_TensorFlow识别复杂验证码以及搭建生产环境_csdn_胡大炮的妖孽人生
2019-05-08
Pycharm中定义函数存在黄色下划线
2017-10-02
Python的django.contrib.auth.model需要安装吗
2017-09-20
使用Python中的Django框架开发博客的支持中文问题
2017-09-16
C++输出最后一个单词字母数
2017-09-07
C++程序,为什么不能输出,循环出不来
2017-09-07
PyCharm中Python导入包问题
2017-09-04
win10 update and privacy settings能卸载吗
2017-08-23
python 中的.replace()问题
2017-08-22
TA创建的收藏夹 TA关注的收藏夹
TA关注的人