- 博客(36)
- 收藏
- 关注
原创 为何JVM中不建议使用synchronized(String s)?实例详解+解决方法
阿泽在学习synchronized关键字小结首先呢总结一下synchronized的三种使用方式:修饰实例⽅法,给对象实例加锁synchronized void method(){}修饰静态⽅法,给当前类加锁synchronized static void method(){}修饰代码块,给当前对象/类加锁synchronized(this){}重点在于第三点,很多知识博客中都提醒了这样一点尽量不要使⽤ synchronized(String a) 因为 JVM
2021-01-19 22:40:22
3987
5
原创 回溯法经典问题——组合总和问题系列总结---代码模板(举一反三)
这几天做LeetCode的每日一题,是关于组合总和的题目。组合总和、组合总和||、组合总和|||。不出意外的话,明天就是组合总和IV了。这种类型的题目算是比较经典,几道题核心内容不变,都是利用回溯法来进行筛选,过程中束缚条件根据题目来稍做修改。组合总和给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正.
2020-09-11 14:23:58
575
原创 list数组存储键值对类型数据实例
很多人都用过List数组对吧,我们经常利用它来存储一些常见的数据类型或引用类型,比如List 、List 等等最近在做LeetCode题目时,遇到了一些数据类型为二维坐标形式的数据,比如(0,1)、(3,4)这种数据,或者是键值对类型的数据(key,value)。一般的我们会用map数据结构来存储。那么能不能List来存储这些数据呢?毕竟list是对付顺序的好帮手!核心代码 List<Map.Entry<Integer,Integer>> list=new ArrayList
2020-09-08 14:49:50
3267
转载 Java位运算详解
目录•写在前面•机器数和机器数的真值•原码、反码和补码的基础概念和计算方法原码反码补码•java中的运算符•不用乘除算乘除加法减法乘法除法•写在前面二进制位运算是最贴近计算机真实运算操作,通过位运算,我们可以高效的完成各种基础运算(加减乘除取余等),我们还可以使用位运算巧妙的完成原本很复杂的工作,真正理解计算...
2020-06-30 11:05:19
236
原创 队列&栈超详细讲解知识点汇总干货(附带例题+代码)
引自LeetCode 队列和栈探索卡队列(先入先出的数据结构)介绍在 FIFO(First In First Out) 数据结构中,将首先处理添加到队列中的第一个元素。队列是典型的 FIFO 数据结构。插入(insert)操作也称作入队(enqueue),新元素始终被添加在队列的末尾。 删除(delete)操作也被称为出队(dequeue)。 你只能移除第一个元素。示例加入新元素6实现为了实现队列,我们可以使用动态数组和指向队列头部的索引。如上所述,队列应支持两种操作:入队和出队。.
2020-05-16 12:18:58
494
原创 超详细讲解二叉树知识点干货汇总——概念、遍历+代码(递归、非递归)+递归解题
取材于LeetCode的探索卡片(二叉树)文章目录概念树的遍历前序遍历中序遍历后序遍历层序遍历运用递归解决问题“自顶向下” 的解决方案“自底向上” 的解决方案概念树 是一种经常用到的数据结构,用来模拟具有树状结构性质的数据集合。树里的每一个节点有一个根植和一个包含所有子节点的列表。从图的观点来看,树也可视为一个拥有N 个节点和N-1 条边的一个有向无环图。二叉树是一种更为典型的树树状...
2020-04-29 23:16:23
348
原创 LeetCode JAVA解题---989. 数组形式的整数加法
LeetCode 题库 全 JAVA 解题989. 数组形式的整数加法现在基本每道题LeetCode都会出官方题解了,这些东西没必要去评论区找大佬了,官方题解给出的都比较全面现在仅记录一下自己没有见过的题型,有趣的思路,拓展一下原题回顾:对于非负整数 X 而言,X 的数组形式是每位数字按从左到右的顺序形成的数组。例如,如果 X = 1231,那么其数组形式为 [1,2,3,1]。给定非...
2020-04-05 22:39:46
251
原创 LeetCode JAVA解题---820. 单词的压缩编码
LeetCode 题库 全 JAVA 解题820. 单词的压缩编码原题回顾:给定一个单词列表,我们将这个列表编码成一个索引字符串 S 与一个索引列表 A。例如,如果这个列表是 [“time”, “me”, “bell”],我们就可以将其表示为 S = “time#bell#” 和 indexes = [0, 2, 5]。对于每一个索引,我们可以通过从字符串 S 中索引的位置开始读取字符串...
2020-03-28 22:06:52
248
原创 LeetCode JAVA解题---945. 使数组唯一的最小增量
LeetCode 题库 全 JAVA 解题945. 使数组唯一的最小增量原题回顾:给定整数数组 A,每次 move 操作将会选择任意 A[i],并将其递增 1。返回使 A 中的每个值都是唯一的最少操作次数。示例 1:输入:[1,2,2]输出:1解释:经过一次 move 操作,数组将变为 [1, 2, 3]。示例 2:输入:[3,2,1,2,1,7]输出:6解释:经过 ...
2020-03-22 18:45:14
121
原创 算法编程之中可能会用到的数学定理总结
数学定理总结把平常遇到过的一些数学定理归类总结一下,建立一个学习库,加油!贝祖定理裴蜀定理(或贝祖定理)得名于法国数学家艾蒂安·裴蜀,说明了对任何整数a、b和它们的最大公约数d,关于未知数x和y的线性不定方程(称为裴蜀等式):若a,b是整数,且gcd(a,b)=d,那么对于任意的整数x,y,ax+by都一定是d的倍数,特别地,一定存在整数x,y,使ax+by=d成立。它的一个重要推论是:...
2020-03-21 12:43:27
569
原创 LeetCode JAVA解题---695. 岛屿的最大面积
LeetCode 题库 全 JAVA 解题695. 岛屿的最大面积原题回顾:给定一个包含了一些 0 和 1的非空二维数组 grid , 一个 岛屿 是由四个方向 (水平或垂直) 的 1 (代表土地) 构成的组合。你可以假设二维矩阵的四个边缘都被水包围着。找到给定的二维数组中最大的岛屿面积。(如果没有岛屿,则返回面积为0。)来源:力扣(LeetCode)链接:https://leetco...
2020-03-15 12:16:39
226
原创 LeetCode JAVA解题---300. 最长上升子序列
LeetCode 题库 全 JAVA 解题300. 最长上升子序列原题回顾:给定一个无序的整数数组,找到其中最长上升子序列的长度。示例 1:输入: [10,9,2,5,3,7,101,18]输出: 4解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。说明:-可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。你算法的时间复杂度应该为 O(n2)...
2020-03-14 20:41:01
99
原创 辗转相除法 GCD
辗转相除法(gcd)介绍:欧几里德算法又称辗转相除法,是指用于计算两个正整数a,b的最大公约数。应用领域有数学和计算机两个方面。计算公式gcd(a,b) = gcd(b,a mod b)。a mod b : a除以b的余数实现方法:1 递归public int GCD(int a,int b) { if(b==0) return a; ...
2020-03-12 13:33:04
774
原创 java编写,最强小白干货分享,超详细讲解+全代码+题目链接(不断更新中~)
动态规划原理基本思想:问题的最优解如果可以由子问题的最优解推导得到,则可以先求解子问题的最优解,在构造原问题的最优解;若子问题有较多的重复出现,则可以自底向上从最终子问题向原问题逐步求解。使用条件:可分为多个相关子问题,子问题的解被重复使用分析优化解的结构递归地定义最优解的代价自底向上地计算优化解的代价保存之,并获取构造最优解的信息根据构造最优解的信息构造优化解动态规划特点:...
2020-03-08 22:08:04
243
原创 LeetCode JAVA解题---面试题59 - II. 队列的最大值
LeetCode 题库 全 JAVA 解题面试题59 - II. 队列的最大值原题回顾:请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value、push_back 和 pop_front 的均摊时间复杂度都是O(1)。若队列为空,pop_front 和 max_value 需要返回 -1示例 1:输入:[“MaxQueue”,“push_bac...
2020-03-07 18:47:37
179
原创 LeetCode JAVA解题---897. 递增顺序查找树
LeetCode 题库 全 JAVA 解题994. 腐烂的橘子原题回顾:在给定的网格中,每个单元格可以有以下三个值之一:值 0 代表空单元格;值 1 代表新鲜橘子;值 2 代表腐烂的橘子。每分钟,任何与腐烂的橘子(在 4 个正方向上)相邻的新鲜橘子都会腐烂。返回直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。如果不可能,返回 -1。来源:力扣(LeetCode)链接:ht...
2020-03-05 12:54:33
168
原创 LeetCode JAVA解题---892. 三维形体的表面积
LeetCode 题库 全 JAVA 解题892. 三维形体的表面积原题回顾:在 N * N 的网格上,我们放置一些 1 * 1 * 1 的立方体。每个值 v = grid[i][j] 表示 v 个正方体叠放在对应单元格 (i, j) 上。请你返回最终形体的表面积。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/surface-...
2020-03-01 17:50:18
180
原创 LeetCode JAVA解题---888. 公平的糖果交换
LeetCode 题库 全 JAVA 解题888. 公平的糖果交换原题回顾:爱丽丝和鲍勃有不同大小的糖果棒:A[i] 是爱丽丝拥有的第 i 块糖的大小,B[j] 是鲍勃拥有的第 j 块糖的大小。因为他们是朋友,所以他们想交换一个糖果棒,这样交换后,他们都有相同的糖果总量。(一个人拥有的糖果总量是他们拥有的糖果棒大小的总和。)返回一个整数数组 ans,其中 ans[0] 是爱丽丝必须交换的...
2020-02-29 18:00:08
197
原创 LeetCode JAVA解题---883. 三维形体投影面积
LeetCode 题库 全 JAVA 解题883. 三维形体投影面积原题回顾:在 N * N 的网格中,我们放置了一些与 x,y,z 三轴对齐的 1 * 1 * 1 立方体。每个值 v = grid[i][j] 表示 v 个正方体叠放在单元格 (i, j) 上。现在,我们查看这些立方体在 xy、yz 和 zx 平面上的投影。投影就像影子,将三维形体映射到一个二维平面上。在这里,从顶部...
2020-02-22 15:24:18
234
原创 LeetCode JAVA解题---874. 模拟行走机器人
LeetCode 题库 全 JAVA 解题874. 模拟行走机器人原题回顾:机器人在一个无限大小的网格上行走,从点 (0, 0) 处开始出发,面向北方。该机器人可以接收以下三种类型的命令:-2:向左转 90 度-1:向右转 90 度1 <= x <= 9:向前移动 x 个单位长度在网格上有一些格子被视为障碍物。第 i 个障碍物位于网格点 (obstacles[i][0...
2020-02-17 20:29:38
543
原创 dfs
深度探索dfs(即按着一个子树探索完,再开始继续探索)按深度探索的方法把叶节点存在一个列表中public void dfs(TreeNode node, List<Integer> leafValues) { if (node != null) { if (node.left == null && node.right ==...
2020-02-17 18:46:56
118
原创 LeetCode JAVA解题---859. 亲密字符串
LeetCode 题库 全 JAVA 解题859. 亲密字符串原题回顾:给定两个由小写字母构成的字符串 A 和 B ,只要我们可以通过交换 A 中的两个字母得到与 B 相等的结果,就返回 true ;否则返回 false 。示例 1:输入: A = “ab”, B = “ba”输出: true示例 2:输入: A = “ab”, B = “ab”输出: false示例3...
2019-12-18 17:11:04
191
原创 LeetCode JAVA解题---844. 比较含退格的字符串
LeetCode 题库 全 JAVA 解题844. 比较含退格的字符串原题回顾:给定 S 和 T 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果。 # 代表退格字符。示例 1:输入:S = “ab#c”, T = “ad#c”输出:true解释:S 和 T 都会变成 “ac”。示例 2:输入:S = “ab##”, T = “c#d#”输出...
2019-11-29 13:08:45
167
原创 python 连接sqlserver 遇到的问题解决详情+测试代码
python 连接sqlserver 遇到的问题解决详情+测试代码1.两种连接方法一种使用pymssql一种使用pyodbc本文用的是第二种,因为第一种安装是在太麻烦了。。。而且pyodbc也比pymssql更加有优势详情见python – pymssql与pyodbc对比adodbapi对…安装问题首先我的python版本为3.7.1我们用pip安装pyodbc会发现错误ss...
2019-11-15 12:24:11
1628
2
原创 LeetCode JAVA解题---824. 山羊拉丁文
LeetCode 题库 全 JAVA 解题824. 山羊拉丁文原题回顾:给定一个由空格分割单词的句子 S。每个单词只包含大写或小写字母。我们要将句子转换为 “Goat Latin”(一种类似于 猪拉丁文 - Pig Latin 的虚构语言)。山羊拉丁文的规则如下:如果单词以元音开头(a, e, i, o, u),在单词后添加"ma"。例如,单词"apple"变为"applema"。...
2019-11-05 13:12:23
154
原创 LeetCode JAVA解题---819. 最常见的单词
LeetCode 题库 全 JAVA 解题819. 最常见的单词原题回顾:给定一个段落 (paragraph) 和一个禁用单词列表 (banned)。返回出现次数最多,同时不在禁用列表中的单词。题目保证至少有一个词不在禁用列表中,而且答案唯一。禁用列表中的单词用小写字母表示,不含标点符号。段落中的单词不区分大小写。答案都是小写字母。示例:输入:paragraph = “Bob hi...
2019-11-01 14:54:37
258
原创 LeetCode JAVA解题---812. 最大三角形面积
LeetCode 题库 全 JAVA 解题812. 最大三角形面积原题回顾:给定包含多个点的集合,从其中取三个点组成三角形,返回能组成的最大三角形的面积。示例:输入: points = [[0,0],[0,1],[1,0],[0,2],[2,0]]输出: 2解释:这五个点如下图所示。组成的橙色三角形是最大的,面积为2。注意:3 <= points.length &l...
2019-10-31 12:07:32
293
1
原创 LeetCode JAVA解题---811. 子域名访问计数
LeetCode 题库 全 JAVA 解题811. 子域名访问计数原题回顾:一个网站域名,如"discuss.leetcode.com",包含了多个子域名。作为顶级域名,常用的有"com",下一级则有"leetcode.com",最低的一级为"discuss.leetcode.com"。当我们访问域名"discuss.leetcode.com"时,也同时访问了其父域名"leetcode.co...
2019-10-29 15:55:07
199
原创 LeetCode JAVA解题---806. 写字符串需要的行数
LeetCode 题库 全 JAVA 解题806. 写字符串需要的行数原题回顾:我们要把给定的字符串 S 从左到右写到每一行上,每一行的最大宽度为100个单位,如果我们在写某个字母的时候会使这行超过了100 个单位,那么我们应该把这个字母写到下一行。我们给定了一个数组 widths ,这个数组 widths[0] 代表 ‘a’ 需要的单位, widths[1] 代表 ‘b’ 需要的单位,…,...
2019-10-25 12:48:28
112
原创 LeetCode JAVA解题---804.唯一摩尔斯密码词
LeetCode 题库 全 JAVA 解题796旋转字符串原题回顾:国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如: “a” 对应 “.-”, “b” 对应 “-…”, “c” 对应 “-.-.”, 等等。为了方便,所有26个英文字母对应摩尔斯密码表如下:[".-","-…","-.-.","-…",".","…-.","–.","…","...
2019-10-24 14:38:52
132
原创 LeetCode JAVA解题---796旋转字符串
LeetCode 题库 全 JAVA 解题796旋转字符串原题回顾:给定两个字符串, A 和 B。A 的旋转操作就是将 A 最左边的字符移动到最右边。 例如, 若 A = ‘abcde’,在移动一次之后结果就是’bcdea’ 。如果在若干次旋转操作之后,A 能变成B,那么返回True。示例 1:输入: A = ‘abcde’, B = ‘cdeab’输出: true示例 2:输...
2019-10-21 13:51:12
120
原创 LeetCode JAVA解题---788旋转数字
LeetCode 题库 全 JAVA 解题788旋转数字原题回顾:我们称一个数 X 为好数, 如果它的每位数字逐个地被旋转 180 度后,我们仍可以得到一个有效的,且和 X 不同的数。要求每位数字都要被旋转。如果一个数的每位数字被旋转以后仍然还是一个数字, 则这个数是有效的。0, 1, 和 8 被旋转后仍然是它们自己;2 和 5 可以互相旋转成对方;6 和 9 同理,除了这些以外其他的数字...
2019-10-18 13:31:29
178
原创 LeetCode 题库 全 JAVA 解题---771.宝石与石头
LeetCode 题库 全 JAVA 解题771.宝石与石头原题回顾:给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头。 S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。J 中的字母不重复,J 和 S中的所有字符都是字母。字母区分大小写,因此"a"和"A"是不同类型的石头。示例 1:输入: J = “aA”, S = “aAAbbbb”...
2019-10-14 14:43:15
144
原创 LeetCode 题库 全 JAVA 解题---766.托普利茨矩阵
LeetCode 题库 全 JAVA 解题766.托普利茨矩阵原题回顾:如果一个矩阵的每一方向由左上到右下的对角线上具有相同元素,那么这个矩阵是托普利茨矩阵。给定一个 M x N 的矩阵,当且仅当它是托普利茨矩阵时返回 True。示例1输入:matrix = [[1,2,3,4],[5,1,2,3],[9,5,1,2]]输出: True解释:在上述矩阵中, 其对角线为...
2019-10-13 10:40:16
153
原创 LeetCode JAVA解题---762二进制表示中质数个计数置位
LeetCode 题库 全 JAVA 解题762.二进制表示中质数个计数置位原题回顾:给定两个整数 L 和 R ,找到闭区间 [L, R] 范围内,计算置位位数为质数的整数个数。(注意,计算置位代表二进制表示中1 的个数。例如21 的二进制表示10101有3个计算置位。还有,1不是质数。)示例1:输入:L=6,R=10输出:4解释:6->110 (2个计算置位,2是质数...
2019-10-09 16:44:13
171
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人