Java
suyongcai1234
这个作者很懒,什么都没留下…
展开
-
MySQL
-- 创建数据库create database test;-- 删除数据库drop database test;-- 创建表格create table if not exists test.t_test(id int auto_increment not null primary key,name varchar(20) not null,age int,borthday date,profile text)engine=InnoDB default charset=utf8;.原创 2020-06-20 17:07:22 · 224 阅读 · 0 评论 -
java.util.concurrent.*(并发工具类) 学习笔记
java.util.concurrent.*(并发工具包) 学习笔记1.并发工具类的作用 1. 为了并发安全; 2. 方便线程管理,避免大量锁的创建和销毁,提高运行效率; 3. 线程间协作2. 线程池线程池的重要性 1. 反复创建线程与销毁大量的线程开销大 2. 过多的线程会占用太多的时间线程池的好处 1. 合理利用CPU和内存 2. 方便统一管理线程 3. 避免锁的创建和销毁,加快响应速度线程池的构造函数重要参数 1. corePoolSize : 核心线程池线程数量原创 2020-06-18 10:53:15 · 582 阅读 · 0 评论 -
【动态规划】【leetcode152】乘积最大子数组
遍历一次:维持当前最大乘积imax和最小乘积imin,当出现负数时,当前最大乘积和当前最小乘积交换,imax = Math.max(imax * nums[i], nums[i]);imin = Math.min(imin * nums[i], nums[i]);max = Math.max(max, imax);/** * 动态规划 */public class Solut...原创 2020-05-06 10:13:48 · 257 阅读 · 0 评论 -
【二叉树遍历】先序遍历、中序遍历、后序遍历(Java)
二叉树的遍历先序遍历递归实现 /** * 先序遍历 (递归方法) * @param root */ public void FirstOrder_Recursive(TreeNode root){ if(root == null) return; System.out.print(root....原创 2020-04-18 20:46:54 · 209 阅读 · 0 评论 -
【通过移位实现加减乘除操作】
/** * 通过移位实现正整数的加减乘除 * */import java.util.*;public class Solution { /** * 加法 * @param num1 * @param num2 * @return */ public int Add(int num1, int num2){ ...原创 2020-04-11 16:17:17 · 409 阅读 · 0 评论 -
【N皇后问题】【leetcode51】(Java)
【N皇后问题】【leetcode51】问题描述八皇后问题,一个古老而著名的问题,是回溯算法的典型案例。该问题由国际西洋棋棋手马克斯·贝瑟尔于 1848 年提出:在 8×8 格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。高斯认为有 76 种方案。1854 年在柏林的象棋杂志上不同的作者发表了 40 种不同的解,后来有人用图论的方...原创 2020-04-07 19:01:09 · 229 阅读 · 0 评论 -
【Java】java中两个 String 字符串类型数据大小比较
方法1如果两个数String字符串中 仅包含 数字 0 ~ 9 和小数点 " . "String a = "32";String b = "334";// 首先将两个数都转换为int 数据int a_N = Integer.valueOf(a);int b_N = Integer.valueOf(b);// 比较大小boolean res = a_N > b_N;方法2...原创 2020-04-05 19:27:37 · 32149 阅读 · 2 评论 -
【全排列问题】全排列问题解析及其应用(Java)
全排列问题全排列问题是一个经典的算法问题,需要将所有元素的所有可能的组合全部搜索到,如果集合中的元素都都各不相同,则全排列一共有 n ! 种组合。例如:a, b, c 的全排列为abc, acb, bac, bca, cab, cba全排列问题往往是首先给出一种排列,然后依次得到所有的排列组合。如果有两个元素,则其排列为(a, b) 和 swap(a, b);同样的,如果有多个元素,...原创 2020-04-02 18:02:20 · 429 阅读 · 0 评论 -
【二叉树】DFS 深度优先遍历 及其 应用 (Java)
文章目录二叉树的深度优先遍历二叉树DFS的应用二叉树DFS(递归方式)[Java]二叉树DFS(非递归堆栈方式)[Java]返回二叉树所有路径 [Java]判断是否存在 路径长度为 target 的路径 [Java]返回路径 和 为 target 的所有路径集合 [Java]测试代码 [Java]二叉树的深度优先遍历深度优先遍历(DFS)也叫深度优先搜索。它的定义是:不断地沿着顶点的深度方向遍...原创 2020-04-02 09:39:38 · 2087 阅读 · 2 评论 -
【栈】栈的压入、弹出序列(Java)
题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的解题依次将元素按顺序压入序列,每次判断栈顶元素是否等于序列中的第 index个元素,如...原创 2020-03-31 22:30:15 · 113 阅读 · 0 评论 -
【栈】包含min最小值的栈 (Java)
简单双栈实现增加一个minStack 用以维持 此时的最小值,每次push进栈的同时,将将此时的最小值push到minStack中;同时出栈也将minStack 也出栈。/** * 双栈实现 * 空间复杂度 O(n) */import java.util.Stack;public class Solution { Stack<Integer> minSta...原创 2020-03-31 19:16:09 · 162 阅读 · 0 评论 -
【二叉树】 二叉树的子树 && 二叉树的子结构(Java)
二叉树的子树判断一个树是否为另一个大的树的子树public class Solution { public boolean HasSubtree(TreeNode root1, TreeNode root2){ if(root2 == null) return false; if(root1 == null) ...原创 2020-03-30 22:10:04 · 233 阅读 · 0 评论 -
【链表】链表反转 (Java)
链表反转利用两个指针 pre 和 cur 分别表示当前遍历到的节点的前一个节点 和 当前遍历到的节点,每次对节点的操作是cur.next = pre将两个指针同时往后移动,注意 这里不能直接用cur = cur.next;pre = pre.next因为 cur.next 已经是 pre节点正确做法ListNode tmpCur = cur.next;cur.next = pre...原创 2020-03-30 16:15:49 · 113 阅读 · 0 评论 -
【链表】返回链表倒数第k个结点(Java)
快慢双指针双指针 pre 和 post 分别指向 当前遍历结点 和 当前往后数 k 个节点,当post节点到达链表最后一个节点时,此时的pre 即为倒数第 k个节点。public class Solution { public ListNode FindKthToTail(ListNode head,int k) { if(k < 1) r...原创 2020-03-30 15:48:56 · 399 阅读 · 0 评论 -
原码、反码、补码 : 你想了解的,都在这里了!!!(Java)
计算机中的有符号数有三种表示方法,即原码、反码和补码。三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位,三种表示方法各不相同 。在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。Java 中整数类型一共有四种,分别是 byte, short, int, long。分别占据8位...原创 2020-03-30 14:03:18 · 297 阅读 · 0 评论 -
【二叉树】由前序遍历和中序遍历构造二叉树(Java)
【二叉树】由前序遍历和中序遍历构造二叉树递归if(preorder.length != inorder.length) return null; if(preorder.length == 0) return null; if(preorder.length == 1) return new...原创 2020-03-29 21:55:51 · 297 阅读 · 0 评论 -
【二叉树】层次遍历
【二叉树】层次遍历记录size来维持public List<List<Integer>> levelOrder(TreeNode root){ if(root == null) return new ArrayList<List<Integer>>(); Queue<TreeNode&...原创 2020-03-25 15:40:11 · 93 阅读 · 0 评论 -
【二叉树】完美二叉树
【二叉树】完美二叉树完美二叉树 (Perfect Binary Tree)A Perfect Binary Tree(PBT) is a tree with all leaf nodes at the same depth. All internal nodes have degree 2.一个深度为k(>=-1)且有2^(k+1) - 1个结点的二叉树称为完美二叉树完全二叉树 (...原创 2020-03-25 14:03:35 · 2068 阅读 · 0 评论 -
【动态规划】【贪心算法】leetcode376 摆动序列(Java)
【动态规划】【贪心算法】leetcode376 摆动序列题目详情暴力法(递归)动态规划** * 动态规划 * 时间复杂度O(n^2) */public class Solution { public int wiggleMaxLength(int[] nums){ if(nums.length < 2) return num...原创 2020-03-20 22:15:56 · 235 阅读 · 0 评论 -
【数组】leetcode80删除排序数组中的重复项Ⅱ(Java)
【数组】leetcode80 删除排序数组中的重复项Ⅱ(Java)题目详情暴力法/** * 时间复杂度O(n^2) */public class Solution { public int removeDuplicates(int[] nums){ if(nums.length < 3) return nums.length;...原创 2020-03-20 10:40:46 · 118 阅读 · 0 评论 -
【二叉树】leetcode104二叉树的最大深度(Java)
【二叉树】leetcode104 二叉树的最大深度题目详情递归/*** * 二叉树的最大深度 * 时间复杂度O(n) * 空间复杂度O(n) */public class Solution { public int maxDepth(TreeNode root){ if(root == null) return 0; ...原创 2020-03-19 22:57:36 · 196 阅读 · 0 评论 -
【贪心算法】leetcode122 买卖股票的最佳时机Ⅱ(Java)
【贪心算法】leetcode122 买卖股票的最佳时机Ⅱ题目详情暴力法(递归)/** * 暴力法 * 时间复杂度O(n^n) */public class Solution { public int maxProfit(int[] prices){ return helper(prices, 0); } private int help...原创 2020-03-19 19:54:55 · 247 阅读 · 0 评论 -
【贪心算法】leetcode134 加油站(Java)
leetcode134 加油站题目详情题目解析解法一遍历每一个加油站作为起始点,判断是否能完成环绕行驶一周,记录当前油箱中所剩余的油量,若当前油箱小于零,则遍历下一个加油站。public class Solution { public int canCompleteCircuit(int[] gas, int[] cost) { if(cost.length ...原创 2020-03-19 15:05:42 · 266 阅读 · 0 评论 -
【动态规划】leetcode279 完全平方数(Java)
【动态规划】leetcode279 完全平方数题目详情动态规划dp[i] = Math.min(dp[i], dp[i - j * j] + 1)/*** * 动态规划 * dp[i] = Math.min(dp[i], dp[i - j * j] + 1) */public class Solution { public int numSquares(int n){...原创 2020-03-18 22:49:37 · 350 阅读 · 3 评论 -
【动态规划】leetcode221最大正方形(Java)
【动态规划】leetcode221 最大正方形题目详情代码实现public class Solution { public int maximalSquare(char[][] matrix){ if(matrix.length == 0) return 0; if(matrix.length == 1) { ...原创 2020-03-18 21:00:04 · 194 阅读 · 0 评论 -
【动态规划】leetcode120 三角形最小路径和
【动态规划】leetcode120 三角形最小路径和题目详情dp[i][j] = min(dp[i - 1][j - 1], dp[i - 1][j]) + nums[i][j]/** * 动态规划 */public class Solution { public int minimumTotal(List<List<Integer>> trian...原创 2020-03-15 16:18:22 · 132 阅读 · 0 评论 -
【动态规划】leetcode85最大矩形 (Java)
【动态规划】leetcode85 最大矩形(Java)题目详情题目解析动态规划设置动态规划数组 dp[][] 数组中的元素表示 grid[i][j] 为1 时其右侧连续1的数目,然后向上寻找能形成的矩形的面积。width = dp[i][j];for(int k = i; k >= 0; k --){ if(dp[k][j] == 0) break; ...原创 2020-03-15 16:04:51 · 337 阅读 · 0 评论 -
【BFS 广度优先遍历】leetcode695岛屿的最大面积(Java)
【BFS广度优先遍历】leetcode695 岛屿的最大面积(Java)题目详情题目解析本题采用广度优先遍历,以每一个元素作为根节点进行广度优先遍历,取最大值作为最终结果。为了避免一个元素被遍历多次,元素被遍历之后设置成0。递归/** * 广度优先遍历(递归) */public class Solution2 { public int maxAreaOfIsland(i...原创 2020-03-15 15:49:48 · 258 阅读 · 0 评论 -
【动态规划】leetcode91 解码方法(Java)
【动态规划】leetcode91 解码方法(java)题目详情题目解析定义dp 数组,dp[i] 用以表示字符串 s 从0 到 i 的子字符串的解码方式的总数,当求解dp[i] 时 考虑当前位置s.charAt(i) 和 dp[i - 1] dp[i - 2];一共有以下几种情况:s.charAt(i) == ‘0’ : 若出现连续两个0 则返回 0; 否则 dp[i] = dp[...原创 2020-03-14 23:19:27 · 189 阅读 · 0 评论 -
【动态规划】leetcode300 最长上升子序列(Java实现)
leeetcode300 最长上升子序列(Java)题目详情题目解析看到题目寻找最长上升子序列时,首先想到需要枚举所有子序列,但是这样直接枚举时间复杂度相对较高,因此,我们想到能不能利用动态规划进行求解。根据动态规划的三个要素:重叠子问题: 求解问题时要遍历数组,当前数组为 i 时,此时的最长子上升子序列与 i - 1 时有关,因此包含重叠子问题。最优子结构: 最长子序列的长度存在,...原创 2020-03-14 23:05:05 · 282 阅读 · 0 评论 -
leetcode31 下一个排列(java)
leetcode31 下一个排列题目详情题目分析字典序在数学中,字典或词典顺序(也称为词汇顺序,字典顺序,字母顺序或词典顺序)是基于字母顺序排列的单词按字母顺序排列的方法。 这种泛化主要在于定义有序完全有序集合(通常称为字母表)的元素的序列(通常称为计算机科学中的单词)的总顺序。对于数字1、2、3…n的排列,不同排列的先后关系是从左到右逐个比较对应的数字的先后来决定的。例如对于5个数字...原创 2020-03-13 20:30:38 · 151 阅读 · 0 评论 -
leetcode1071 字符串的最大公因子
leetcode1071 字符串的最大公因子题目详情题目解析解法一 : 暴力法定义函数 boolean isgcdOfString(String str, String gcd) 用来 str 是否能被 gcd 整除定义函数 Set< String> divOfString(String str) 返回所有能整除字符串 str 的字符串对两个字符串 str1 和 str...原创 2020-03-13 13:23:30 · 315 阅读 · 0 评论 -
leetcode139 单词拆分
leetcode139 单词拆分题目详情题目解析递归(有记忆递归)根据题目可以试想,如果确定字符串前 i 个字符能是wordDict中的单词,那么只要半段第 i 个 字符以后的字符串是否能够拆分即可。因此可以采用递归的方式进行穷举。为了能够更快的查找到wordDict是否包含字符串,可以将wordDict 转换成HashSet。直接进行递归的时间复杂度为 O(n^n)递归过程中会产...原创 2020-03-13 13:05:24 · 140 阅读 · 0 评论 -
leetcode124二叉树的最大路径和
leetcode124 二叉树的最大路径和题目详情Java代码public class Solution { private static int max = Integer.MIN_VALUE; public int maxPathSum(TreeNode root){ helper(root); return max; } ...原创 2020-03-11 22:38:13 · 119 阅读 · 0 评论 -
leetcode128最长连续序列
leetcode128 最长连续序列题目详情先排序方法public class Solution { public int longestConsecutive(int[] nums){ if(nums.length < 2) return nums.length; Arrays.sort(nums); ...原创 2020-03-11 22:34:46 · 199 阅读 · 0 评论 -
leetcode114二叉树展开为链表
leetcode114 二叉树展开为链表题目详情题目解析(递归)将左子树转化为链表,并插入到右子树的位置将原来的右子树转化为链表,并插入到新插入的右子树后面将左子树置为null 1 / \ 2 5 / \ \3 4 6//将 1 的左子树插入到右子树的地方 1 \ 2 5 / \ ...原创 2020-03-11 13:35:43 · 167 阅读 · 0 评论 -
leetcode1013将数组分成相等的三部分
leetcode1013将数组分成相等的三部分题目详情题目解答public class Solution { public boolean canThreePartsEqualSum(int[] A){ int sum = sum(A, 0, A.length); if(sum % 3 != 0) return false;...原创 2020-03-11 12:14:54 · 267 阅读 · 0 评论 -
leetcode438 找到字符串中所有字母异位词 &通用滑动窗口解法
leetcode438 找到字符串中所有字母异位词题目详情本题解法public class Solution { public List<Integer> findAnagrams(String s, String p){ if(s.length() < p.length()) return new ArrayList<...原创 2020-03-10 21:36:26 · 307 阅读 · 0 评论 -
leetcode543二叉树的直径
leetcode543 二叉树的直径题目详情定义:二叉树的直径给定一个二叉树,二叉树的直径长度为任意两个节点路径长度的最大值。定义:二叉树的深度二叉树的深度为:从根节点到达叶子节点的最大路径长度,路径长度是指从根节点到达叶子节点的经过的节点的个数。题目解析根据题目我们可以发现求解二叉树的直径和求解二叉树的深度有相似之处,二叉树的深度为左子树的最大深度 L 加上右子树的最大深度 R ...原创 2020-03-10 14:13:25 · 120 阅读 · 0 评论 -
leetcode105从前序与中序遍历序列构造二叉树(Java实现)
leetcode105从前序与中序遍历序列构造二叉树题目详情题目分析首先由前序遍历的性质可以得出,前序遍历序列的第一个数即为二叉树的根节点,通过根节点在中序遍历中查找根节点的位置,中序遍历序列中,根节点左侧为左子树的中序遍历,右侧为右子树的中序遍历。根据左子树的节点个数可以在前序遍历序列中找出左右子树的分界点,然后利用递归方法,生成左右子树。public class Solution2 ...原创 2020-03-09 16:10:47 · 515 阅读 · 0 评论