自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(65)
  • 收藏
  • 关注

原创 124. 二叉树中的最大路径和

124. 二叉树中的最大路径和题目描述思路链接题目描述思路对每一个节点来说,全局的max 可以是这个节点左边最大值+右边最大值+这个节点的值但是如果递归向上返回的时候,当前节点一定要参与,因此返回的是max(左边最大值,右边最大值)+当前节点值 int max = Integer.MIN_VALUE; public int maxPathSum(TreeNode root) { if(root == null) return 0; dfs(r

2020-06-21 08:10:06 111

原创 125. 验证回文串

125. 验证回文串题目描述简要介绍思路1.扫描+reverse+比较2.左右指针3. 在原字符串上直接比较链接题目描述简要介绍思路这题主要考察 API 的调用如:Character.toLowerCase(char c)Character.isLetterOrDigit(char c); :----判断 c 是否是字母或者数字1.扫描+reverse+比较class Solution { public boolean isPalindrome(String s) {

2020-06-19 07:56:53 110

原创 14最长公共前缀

14最长公共前缀1.题目描述2.思路3. 代码leetcode链接1.题目描述2.思路设最长公共前缀为strs[0]每次取一个字符串和ans进行比较,更新最长公共前缀3. 代码public String longestCommonPrefix(String[] strs) { if(strs == null || strs.length == 0){ return ""; } String ans = strs[0]; for(int i =

2020-06-15 17:09:01 125

原创 739每日温度【递减栈】【中等】

每日温度题目描述递减栈(O(N))链接题目描述递减栈(O(N))视频一视频胜千言遍历一次数组,构造递减栈,如果当前数字大于栈顶,出栈,计算栈顶坐标对应的结果;如果小于栈顶,入栈class Solution { public int[] dailyTemperatures(int[] T) { int[] res = new int[T.length]; Stack<Integer> stack = new Stack<>();

2020-06-11 20:21:32 111

原创 树的各种遍历

树的各种遍历一.前序,中序,后序遍历1.递归写法2.一种统一的写法:“颜色”遍历3.普通迭代写法二.层次遍历一.前序,中序,后序遍历1.递归写法class Solution { public static void preOrderRecur(Node head) { if (head == null) { return; } System.out.print(head.value + " "); preOrderRecur(head.left); preOrderRec

2020-06-05 20:58:15 98

原创 面试题29. 顺时针打印矩阵

面试题29. 顺时针打印矩阵1.题目描述2.分析3.代码题目链接1.题目描述2.分析标记出上下左右(t,b,l,r)四个边界,顺时针打印也就是:左-右,上-下,右-左,下-上这里注意 ++i 的使用3.代码class Solution { public int[] spiralOrder(int[][] matrix) { if(matrix == null || matrix.length == 0 || matrix[0].length == 0){

2020-06-05 19:39:00 63

原创 300. 最长上升子序列

300. 最长上升子序列1.题目描述2.动态规划2.1 分析2.2 代码2.3复杂度分析3.动态规划的改进(修改状态定义)最长上升子序列1.题目描述2.动态规划2.1 分析首先考虑题目问什么,就把什么定义成状态。题目问最长上升子序列的长度,其实可以把「子序列的长度」定义成状态dp[i]: 以nums[i]结尾的上升子序列的最大长度如果nums[0,i-1]均大于nums[i],那么以nums[i]结尾的上升子序列的最大长度为 1否则,考虑return,2.2 代码class S

2020-06-02 09:08:19 94

原创 面试题 01.07. 旋转矩阵

面试题 01.07. 旋转矩阵题目描述一:先转置,再每行关于中心对称二:把每个点的对应位置找到链接题目描述一:先转置,再每行关于中心对称我们发现,(m,n)的元素旋转过后变成n行,倒数第m列转置:使(m,n) -> (n,m)每行关于中心点对称:(n,m)->n行,倒数第m列class Solution { public void rotate(int[][] ...

2020-04-07 10:17:11 99

原创 146. LRU缓存机制

146. LRU缓存机制题目描述思路基于 HashMap 和 双向链表实现代码链接题目描述思路基于 HashMap 和 双向链表实现代码class LRUCache { private int count; private int capacity; private HashMap<Integer,LinkedNode> cache...

2020-04-05 14:43:26 65

原创 42. 接雨水【困难】未完

42. 接雨水题目描述~~1.按行接 O(M∗N)O(M*N)O(M∗N)~~ 【不用看】2. 按列接 O(N2)O(N^2)O(N2)3.动态规划 时间:O(n)O(n)O(n) 空间:O(n)O(n)O(n)4.双指针5.栈(联想【括号匹配】)链接题目描述1.按行接 O(M∗N)O(M*N)O(M∗N) 【不用看】从第一行遍历到最后一行,统计雨水的数量对于第 i 行:如果当前高度 ...

2020-04-04 19:03:52 142

原创 289. 生命游戏

289. 生命游戏题目描述思路链接题目描述思路对表格中的每一个点,看看周围八个位置有几个存活的细胞用一个新的数组保存结果,最后再复制回去主要是注意对于每个点周围八个位置的处理,可以使用dx 和 dy 两个数组class Solution { public void gameOfLife(int[][] board) { if(board == null ||...

2020-04-02 09:49:27 101

原创 1111. 有效括号的嵌套深度

1111. 有效括号的嵌套深度题目描述思路链接题目描述思路class Solution { public int[] maxDepthAfterSplit(String seq) { if(seq == null){ return new int[0]; } int idx = 0; ...

2020-04-01 21:05:11 95

原创 20. 有效的括号

20. 有效的括号题目描述栈链接题目描述栈如果是左括号,就把对应的右括号放到栈里。如果是右括号,就首先判断栈是否为空,若不空,看栈顶元素是否是对应的右括号。class Solution { public boolean isValid(String s) { if(s == null){ return true; } ...

2020-04-01 17:21:45 64

原创 62.圆圈中最后剩下的数字

62.圆圈中最后剩下的数字题目描述1.数学递归迭代2.数组模拟圆环(超时)3.ArrayList模拟圆环(超时)62.圆圈中最后剩下的数字题目描述1.数学递归class Solution { public int lastRemaining(int n, int m) { if(n == 1){ return 0; }...

2020-03-30 10:51:19 107

原创 0.bfs综合

bfs综合101.对称二叉树[102. 二叉树的层次遍历](https://blog.csdn.net/weixin_42469108/article/details/105187291)101.对称二叉树检查二叉树是否镜像对称。递归:(left.left,right.right)&&(left.right,right.left)迭代:队列,类似于BFS,每次出队列两个,...

2020-03-29 22:29:54 91

原创 101. 对称二叉树

101. 对称二叉树题目描述递归解法迭代链接题目描述递归解法注意递归调用时函数的参数为node1.left,node2.right和node1.right,node2.left/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left...

2020-03-29 22:20:25 55

原创 102. 二叉树的层次遍历

102. 二叉树的层次遍历题目描述BFS链接题目描述BFS本题主要是输出结果的格式问题对于每一行,用一个List封装,然后把每一个List结合到一个最后的List中输出。可以使用一个 size 变量,记录队列的长度(即为本行的Node数量)/** * Definition for a binary tree node. * public class TreeNode { * ...

2020-03-29 21:50:09 82

原创 1162. 地图分析【图的BFS】

1162. 地图分析【图的BFS】题目描述图的BFS链接题目描述图的BFSTree的 BFS : 要把 root 节点先入队,然后再一层一层的无脑遍历就行了。class Solution { public int maxDistance(int[][] grid) { //图的BFS //首先把所有陆地都入队列,然后取出一个,把周围的入队列 ...

2020-03-29 21:23:00 105 1

原创 【中等】820. 单词的压缩编码

820. 单词的压缩编码题目描述Trie前缀树链接题目描述Trie前缀树先把 words 数组中的字符串按长度从大到小排序,然后依次逆序插入 Trie 中class Solution { public int minimumLengthEncoding(String[] words) { if(words == null || words.length == 0...

2020-03-28 12:34:54 112

原创 【914】. 卡牌分组

914. 卡牌分组题目描述最大公约数1.思路2.代码3.运行结果:链接题目描述最大公约数1.思路对每一个数算一下出现的个数放在map中。key:数字value:出现的次数分组成功的情况:所有数字的出现次数的最大公约数 >= 22.代码class Solution { public boolean hasGroupsSizeX(int[] deck) { ...

2020-03-27 10:23:28 102

原创 714. 买卖股票的最佳时机含【手续费】

714. 买卖股票的最佳时机含手续费题目描述代码链接题目描述代码在每次买入的时候计算手续费即可class Solution { public int maxProfit(int[] prices, int fee) { if(prices == null || prices.length == 0){ return 0; ...

2020-03-26 11:15:16 54

原创 309. 最佳买卖股票时机含【冷冻期】

309. 最佳买卖股票时机含冷冻期题目描述思路代码链接题目描述思路代码class Solution { public int maxProfit(int[] prices) { if(prices == null || prices.length == 0){ return 0; } int n = pr...

2020-03-26 11:10:52 80

原创 【892】. 三维形体的表面积

892. 三维形体的表面积题目描述思路更简洁的写法,使用了位运算链接题目描述思路计算所有的正方体的总个数,总的表面积就是 6 * 总个数每有一个重合面,表面积就会减少 2再去找重合面:同一个格子上存在数量 > 2 的正方体,重合面 = 个数 - 1左右重合上下重合class Solution { public int surfaceArea(int[][]...

2020-03-26 10:35:27 104

原创 【简单】999. 车的可用捕获量

999. 车的可用捕获量题目描述思路1.代码2.复杂度分析链接题目描述思路首先找到 车 的位置。然后上下左右 四个方向搜索:如果遇见 象 ,结束搜索如果遇见卒 ,num++ ,结束搜索如果超出边界,结束搜索1.代码class Solution { public int numRookCaptures(char[][] board) { //找到'R...

2020-03-26 09:35:12 80

原创 【188】. 买卖股票的最佳时机 IV(最多允许K次交易)

188. 买卖股票的最佳时机 IV题目描述思路链接题目描述思路【通用方法解决股票问题】找到状态转移方程和 base case本题需要注意,k 如果很大会超时如果 K>n/2那就相当于 可以进行无限次交易 public int maxProfit(int k, int[] prices) { if(prices == null || prices.le...

2020-03-25 12:05:44 261

原创 【123】. 买卖股票的最佳时机 III(最大允许2次交易)

【123】. 买卖股票的最佳时机 III(最大允许2次交易)题目描述思路【123】. 买卖股票的最佳时机 III(最大允许2次交易)题目描述思路用【通用方法秒杀股票问题】dp[n][k][0~1]: 其中n为天数,k最到目前允许的最大交易次数,0~1表示持有或者不持有找到状态转移方程:dp[i][k][0] = max(dp[i-1][k][0], dp[i-1][k][1] + ...

2020-03-25 11:48:02 130

原创 【122】. 买卖股票的最佳时机 II

【122】. 买卖股票的最佳时机 II题目描述思路链接点我题目描述思路 public int maxProfit(int[] prices) { if(prices == null || prices.length == 0){ return 0; } int maxProfit = 0; f...

2020-03-25 10:18:26 55

原创 【中等】【337】打家劫舍III【树形DP】

【中等】【337】打家劫舍III【树形DP】题目描述思路1.暴力递归-最优子结构2. 记忆化-解决重复子问题3.终极解法链接点我题目描述思路1.暴力递归-最优子结构 public int rob(TreeNode root) { if(root == null){ return 0; } int money...

2020-03-24 16:29:06 85

原创 【中等】【213】打家劫舍II

【中等】【213】打家劫舍II题目描述思路链接点我题目描述思路和 [198]打家劫舍 的区别就是本题形成了一个环。也就是第一家和最后一家不能同时打劫。可以把环状转化成两个单排排列问题。 public int rob(int[] nums) { if(nums == null || nums.length == 0){ return 0;...

2020-03-24 15:47:45 62

原创 【简单】【面试题 】【17.16.】 按摩师【198】打家劫舍

【简单】【面试题 】【17.16.】 按摩师题目描述思路题目描述思路这题是【打家劫舍】的变种。状态转移方程: dp[i] = max(dp[i-1] + dp[i-2] + nums[i])dp[i]表示在 i 这个位置的最长时长 public int massage(int[] nums) { if(nums == null || nums.length ==...

2020-03-24 12:18:31 198

原创 [40]最小的k个数

40.最小的k个数题目描述1.经典 top k 问题(1)快排:最最最高效解决top k 问题---O(N)(2)大根堆(前k小)/小根堆(前k大),Java中有现成的PriorityQueue,实现起来最简单,O(NlogK)(3)二叉搜索树也可以O(NlogK)解决Top K问题2.自己做法(Arrays.sort())链接题目描述1.经典 top k 问题(1)快排:最最最高效解决...

2020-03-20 10:29:49 67

原创 [409]最长回文串

409.最长回文串题目描述做法~~1.自己的做法~~2. 位运算+只生成长度为58的数组链接题目描述做法1.自己的做法遍历 s 中的每一个字符,对每一个字符放入到 map 中。最后统计 map 中每个字符出现的次数如果是偶数,结果直接加这个数如果是奇数,结果加这个数减1,并且设置一个 boolean 类型变量记录是否出现了奇数最后如果出现了奇数,那么最后结果要 +1 。c...

2020-03-19 22:44:10 60

原创 SQL语句学习

MySQL必知必会1.SELECT(检索数据)2.ORDER BY(排序数据)3.WHERE(过滤数据)1.SELECT(检索数据)1.检索单个列:SELECT prod_name FROM products;2.检索多个列:SELECT prod_name,prod_id,prod_price FROM products;3.检索所有列:SELECT * FROM products;4...

2020-03-04 12:29:17 127

原创 LeetCode-买卖股票的最佳时机121

买卖股票的最佳时机题目描述思路1.暴力法(O(N^2))2.利用最低“谷”,一次遍历O(n)买卖股票的最佳时机121题目描述思路1.暴力法(O(N^2))对每一个值,找后面的最大差值class Solution { public int maxProfit(int[] prices) { //暴力法 if(prices == null || p...

2020-01-28 09:41:47 84

原创 25. 【困难】K 个一组翻转链表

25. K 个一组翻转链表题目描述思路代码链接题目描述思路代码/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class Sol...

2019-12-28 14:28:20 49

原创 24. 【中等】两两交换链表中的节点

24. 【中等】两两交换链表中的节点题目描述1.递归代码2.非递归代码链接题目描述1.递归代码/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * }...

2019-12-22 10:59:36 69

原创 23. 【困难】合并K个排序链表

23. 合并K个排序链表题目描述思路代码链接题目描述思路可以用循环或者递归的方式处理合并两个有序链表对于合并K个有序链表,可以采用分治的思想如果链表数组中,左半部分合并好了,右半部分合并好了,我们只需合并两个有序链表即可完成任务代码/** * Definition for singly-linked list. * public class ListNode { * ...

2019-12-22 10:33:52 54

原创 22. 【中等】括号生成

22. 【中等】括号生成题目描述思路代码链接题目描述思路左括号数量如果等于 n ,那么只能生成右括号如果左括号数量小于 n :如果左括号数量 > 右括号数量,那么可以生成左或者右否则,只能生成左代码class Solution { private List<String> res = new ArrayList<>(); ...

2019-12-22 10:14:06 116

原创 21. 【简单】合并两个有序链表

21. 合并两个有序链表题目描述1.迭代代码2.递归代码链接题目描述1.迭代代码/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */cl...

2019-12-22 09:39:14 94

原创 20. 【简单】有效的括号

20. 【简单】有效的括号题目描述利用栈1.思路代码2.栈+map:写法更简便链接题目描述利用栈1.思路如果是左括号,就入栈;如果是右括号,栈不空并且栈顶是对应的左括号,那就出栈,否则返回 false代码class Solution { public boolean isValid(String s) { if(s == null || s.length()...

2019-12-20 21:08:14 96

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除