自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 LeetCode538-20.9.21-二叉搜索树转换为累加树

题目链接:LeetCode538思路:dfs反中序遍历树看题解收获:morris减少空间复杂度代码:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { priva

2020-09-21 20:18:39 86

原创 LeetCode77-20.9.8-组合

链接:LeetCode77过程:怎么感觉脑子如此生涩,回忆起组合的知识,习惯性看题解。理解简单,开始的时候想难。。。思路:枚举状态代码:class Solution { List<List<Integer>> ans=new ArrayList<>(); List<Integer> temp=new ArrayList<>(); int n,k; public List<List<Integer&

2020-09-08 18:58:47 97

原创 LeetCode107-20.9.7-二叉树的层次遍历

链接:LeetCode107过程:略思路:遍历树代码:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { public List<List<Intege

2020-09-07 00:19:08 125 1

原创 LeetCode60-20.9.5-第k个排列

链接:LeetCode60过程:意识到暴力不可取,想直接算第k个,看了看题解。思路:问题转化,缩小求解规模,抛弃无用计算代码:class Solution { public String getPermutation(int n, int k) { int[] factorial=new int[n]; factorial[0]=1; for(int i=1;i<n;i++)factorial[i]=factorial[i-1]*i;

2020-09-05 23:29:53 72

原创 LeetCode257-20.9.4-二叉树的所有路径

链接:LeetCode257过程:我一眼就看出(你不是人 )是树的遍历。思路:树的遍历,dfs或者bfs代码:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { L

2020-09-04 20:01:11 93

原创 LeetCode51-20.9.3-N皇后

链接:LeetCode51过程:略思路:枚举回溯代码:class Solution { List<List<String>> ans=new ArrayList<>(); List<String> temp=new ArrayList<>(); boolean[][] fail=null; int n; public List<List<String>> solveNQueen

2020-09-03 20:28:50 97

原创 剑指Offer30-20.9.2-表示数值的字符串

链接:题目思路与算法:有限状态自动机题解代码:class Solution { public boolean isNumber(String s) { Map<State, Map<CharType, State>> transfer = new HashMap<State, Map<CharType, State>>(); Map<CharType, State> initialMap = new H

2020-09-02 20:36:49 84

原创 LeetCode486-20.9.1-预测赢家

链接:LeetCode486过程:cv思路:递归,dp代码:class Solution { public boolean PredictTheWinner(int[] nums) { int length = nums.length; int[][] dp = new int[length][length]; for (int i = 0; i < length; i++) { dp[i][i] = nums[i

2020-09-01 21:55:32 76

原创 2020-08-31

链接:LeetCode841过程:略思路:搜索,dfs,bfs代码:class Solution { List<List<Integer>> rooms=null; boolean[] vis=null; int num=0; public boolean canVisitAllRooms(List<List<Integer>> rooms) { if(rooms==null)return true;

2020-08-31 20:27:31 80

原创 LeetCode557-20.8.30-反转字符串的单词

链接:LeetCode557过程:略思路:遍历字符串反转单词代码:class Solution { public String reverseWords(String s) { StringBuilder sb=new StringBuilder(); StringBuilder ans=new StringBuilder(); int pr=0; for(int i=0;i<s.length();i++){

2020-08-30 18:10:23 102

原创 LeetCode214-20.8.29-最短回文串

链接:LeetCode214过程:cv大法好思路:看题解代码:class Solution { public String shortestPalindrome(String s) { int n = s.length(); int[] fail = new int[n]; Arrays.fill(fail, -1); for (int i = 1; i < n; ++i) { int j = fa

2020-08-29 19:51:09 87

原创 LeetCode657-20.8.28-机器人能否返回原点

链接:LeetCode657过程:略思路:略代码:class Solution { public boolean judgeCircle(String moves) { int a=0,b=0,c=0,d=0; for(int i=0;i<moves.length();i++){ switch(moves.charAt(i)){ case 'L':a++;break;

2020-08-28 18:37:14 79

原创 LeetCode332-20.8.27-重新安排行程

链接:LeetCode332过程:略思路:看题解,欧拉回路或通路用Hierholzer算法代码:class Solution { Map<String,PriorityQueue<String>> map=new HashMap<>(); LinkedList<String> ans=new LinkedList<>(); public List<String> findItinerary(List&lt

2020-08-27 19:01:26 97

原创 LeetCode17-20.8.26-电话号码的字母组合

链接:LeetCode17过程:略思路: 回溯来枚举代码;class Solution { List<String> list=new ArrayList<>(); StringBuilder temp=new StringBuilder(); char[][] pattern=new char[][]{ {'a','b','c'}, {'d','e','f'}, {'g','h','i'},

2020-08-26 12:07:36 91

原创 LeetCode491-20.8.25-递增子序列

链接:LeetCode491过程:略思路:枚举代码:class Solution { List<Integer> temp=new ArrayList<>(); List<List<Integer>> ans=new ArrayList<>(); public List<List<Integer>> findSubsequences(int[] nums) { dfs(0,In

2020-08-25 22:49:22 124

原创 LeetCode459-20.8.24-重复的子字符串

链接:LeetCode459过程:用的枚举方法,看题解,知道了还有方法二和kmp写的方法二。思路:枚举字串、字串匹配。我的枚举代码:class Solution { public boolean repeatedSubstringPattern(String s) { StringBuilder sb=new StringBuilder(); int lens=s.length(); for(int i=0;i<lens-1;i++){

2020-08-24 17:21:58 109

原创 LeetCode201-20.8.23-数字范围按位与

链接:LeetCode201过程:想了想,看题解,求前缀用位移和Brian Kernighan算法思路:略代码:class Solution { public int rangeBitwiseAnd(int m, int n) { int cnt=0; while(m<n){ n=n&(n-1); } return n; }}...

2020-08-23 11:46:46 112

原创 LeetCode679-20.8.22-24点游戏

链接:LeetCode679过程:以前做过,快忘记了,枚举所有可能的情况,判断一下就行思路:用回溯来枚举状态代码:class Solution { public boolean judgePoint24(int[] nums) { int[] hh=new int[4]; for(int i=0;i<4;i++)hh[i]=1; return dfs(nums,hh); } boolean dfs(int[] a,int[

2020-08-22 19:39:18 123

原创 LeetCode111-20.8.21-二叉树的最小深度

链接:LeetCode111过程:略思路:dfs,看题解觉得bfs较好代码:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { public int minDept

2020-08-21 21:32:54 92

原创 LeetCode-2020.8.20-扫雷游戏

链接:LeetCode529过程:开始看题目还以往很难,毕竟越长的题目一般越难,觉得还行,模拟+搜索,搜索dfs和bfs基本操作,然后做了,然后错了,然后再看题,再冷静思考,经历了一阵发呆后,原来不是上下左右四种状态而是上下左右加对角八种,然后就可以了。思路:模拟+搜索代码:class Solution { char[][] board; int[][] dxy={ {0,0,-1,1,-1,-1,1,1}, {-1,1,0,0,-1,1,-1,1}

2020-08-20 20:04:23 109

原创 LeetCode647-20.8.19-回文字串

题目链接:LeetCode647过程:一开始暴力,时间老长,然后看题解,知道了方法1:枚举回文串中心o(n2)方法2: Manacher(马拉车)算法o(n)思路:暴力枚举字串、枚举、Manacher代码:class Solution { public int countSubstrings(String s) { StringBuilder sb=new StringBuilder(); int n=s.length(); sb.ap

2020-08-19 17:18:34 124

原创 LeetCode109-20.8.18-有序链表转二叉搜索树

题目链接:LeetCode109过程:一开始想直接写二叉搜索树,一个节点一个节点的插入树中,但感觉好麻烦而且不会。索性去看题解。(我太呆了 )题解真好。做法:分治,评论里有位bfs建树,dfs中序遍历填值感觉可以。代码:/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNod

2020-08-18 09:46:40 108

原创 LeetCode110-20.8.17-平衡二叉树

题目链接:LeetCod110分析:一个二叉树是平衡二叉树,当每个节点的左右子树差不超过1。思路:树的遍历我的代码:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution {

2020-08-17 08:48:42 79

原创 LeetCode733-20.8.16-图像渲染

题目链接:LeetCode733分析:可以想象成一滴墨水落在画着格子的纸上,又是熟悉的配方,还是熟悉的味道。思路:bfs或dfs代码:class Solution { public int[][] floodFill(int[][] image, int sr, int sc, int newColor) { int currentColor=image[sr][sc]; if(currentColor==newColor)return image;

2020-08-16 09:21:28 94

原创 LeetCode546-20.8.15-移除盒子

题目链接:LeetCode546分析:(不会 )看题解思路:dp照着题解敲的代码:class Solution { public int removeBoxes(int[] boxes) { int n=boxes.length; int[][][] dp=new int[n][n][n+1]; return caculate(boxes,dp,0,n-1,0); } int caculate(int[] boxes,int[]

2020-08-15 19:08:11 137 1

原创 LeetCode20-20.8.14-有效的括号

题目链接:LeetCode20分析:括号匹配思路:栈我的代码:没有提早判断,脑子坏掉了。class Solution { public boolean isValid(String s) { Map<Character,Character> map=new HashMap<>(){ { put('(',')'); put('{','}');

2020-08-14 16:14:00 83

原创 LeetCode43-20.8.13-字符串相乘

题目链接:LeetCode43分析:无思路:我的思路:模拟竖式乘法。题解的思路:解法一,分解乘法为加法,模拟加法。解法二, 模拟乘法,解法二变种,对于答案字符的每一个位 置计算别人对它的贡献,而不是解法二的计算当前位置对别人的贡献。解法三,对解法二用快速博里叶变化加速卷积的计算,(这就不用了吧 )自行了解。我的代码:class Solution { public String multiply(String num1, String num2) { int n=n

2020-08-13 21:28:46 69

原创 LeetCode133-20.8.12-克隆图

题目链接:LeetCode133分析:无向图的克隆可以通过一个map存出克隆前和克隆后的节点的引用。思路:dfs或者bfs代码:/*// Definition for a Node.class Node { public int val; public List<Node> neighbors; public Node() { val = 0; neighbors = new ArrayList<Node>

2020-08-12 21:00:57 73

原创 LeetCode130-20.8.11-被围绕的区域

题目链接:LeetCode130分析:还是熟悉的配方,在边界遇到’O’的时候搜索就成。思路:dfs或者bfs都行,对这题没啥大的区别,我比较喜欢用dfs。代码:class Solution { static int[] xx=new int[]{0,0,1,-1}; static int[] yy=new int[]{1,-1,0,0}; int n,m; public void solve(char[][] board) { n=board.leng

2020-08-11 18:16:48 122

原创 LeetCode696-20.8.10-计数二进制子串

题目链接:LeetCode696分析:开始看毫无头绪,看着上面写的简单,觉得自己好菜,看了一会之后,emmm,就这样搞,想到枚举i,j暴力判断i,j字串,然后看数据范围n<5e4,这o(n3)不行,只有o(n)的,就想个o(n)的,然后想到能不能遍历一遍完成,觉得可以,因为每次0,1交界处答案开始计数,计数到再一次变化或者前面的不同0,1gg...

2020-08-10 19:35:41 99

原创 LeetCode93-20.8.9-复原IP地址

题目链接:LeetCode93分析:开始觉得还行,刚睡醒有点头昏,想得不是很清楚,细节没考虑到,wrong了很多次,主要想法是状态的变换,每一段的不同取法代表不同变换,有些状态可以到达终点,有些不行,判断就行,但就是这个判断要想清楚,剪枝,也就是提前终止不能到达目的地的状态,这也要想好。思路:选择了递归,觉得递归通用一些代码:就我代码来看,可以看出我头脑不是很清楚。class Solution { public List<String> restoreIpAddresses(St

2020-08-09 16:19:46 95

原创 LeetCode99-20.8.8-恢复二叉搜索树

题目链接:LeetCode99分析:看了题解做的,一开始想遍历树找到不符合的一个节点并在树中再次遍历找另一个,后来发现是一团糟。看了题解之后发现只要利用BST中序遍历是有序的特点就能思路清晰的做。如题解所说,有三种解法,时间复杂度都是o(n),空间复杂度分别是o(n),o(h),o(1),三者都利用了BST中序遍历有序。第一种是中序遍历出来,找到交换的点的值,然后遍历找交换的点直接赋另外的一个的值。第二种隐式中序遍历是保存一个中序遍历的前驱的值,手动实现栈和递归的栈原理一样,都是,一直进入到树底部,

2020-08-08 16:40:42 110

原创 牛客网NC46-20.8.7-贪心

题目链接:NC46题意、输入、输出:分析:注意这里火柴不能拼接思路:计算每一个长度有多少个,优先拼正方形代码:import java.util.*;public class Solution { /** * * @param n int整型 n * @param Stick int整型一维数组 Stick * @return long长整型一维数组 */ static int maxn=(int)1e5+5; pu

2020-08-07 21:45:45 204

原创 牛客网A-20.8.6-数学

链接:A题意、输入、输出:分析:略思路:略,漏想了条件,脑子不够用啊。代码:class Solution {public: /** * * @param n int整型 字符串长度n * @param k int整型 循环右移次数k * @return int整型 */ int solve(int n, int k) { // write code here int hh=k%n;

2020-08-06 23:22:00 97

原创 牛客网NC30-20.8.05-树,贪心

题目链接:NC30题意、输入、输出:分析:对于题叙述的构造方法,一颗树,深度大的节点比深度小的值大,同一深度的右边大。所以为了得到最大值,可走最大深度的右边。左子树范围>=右子树范围。思路:右边能一直平分的情况下要走左边,其他情况走右边,即是右边是2的n次方,这时右边是2的n次方加1,比右边多一层。代码:import java.util.*;public class Solution { /** * * @param T int整型 * @

2020-08-05 20:30:50 107

原创 牛客网NC26-20.8.4-树

题目链接:NC26题意、输入、输出:代码:import java.util.*;public class Solution { /** * 算法交流群 * @param n int整型 群员个数 * @param a int整型一维数组 群员的等级 * @param p int整型一维数组 群友寻求帮助的人 * @param k int整型一维数组 群友产生的问题等级 * @return int整型一维数组 */

2020-08-04 20:35:33 245

原创 牛客网NC10-20.8.3-dp

链接:NC10题意、输入、输出:分析:初始化一个最大值,从1,1开始看下、右、右下,判断到它们的体积是否小于它们原本的。小于就走。思路:dp代码:import java.util.*;public class Solution { /** * * @param presentVolumn int整型二维数组 N*M的矩阵,每个元素是这个地板砖上的礼物体积 * @return int整型 */ static int inf=0x7f

2020-08-03 19:32:27 115

原创 牛客网NC18、12-20.8.2-模拟、递推

NC18题目链接:NC18题意、输入、输出:分析:模拟,从将开始或者其他棋子判断都行思路:无代码:import java.util.*;public class Solution { /** * * @param chessboard string字符串一维数组 * @return string字符串 */ public String playchess (String[] chessboard) { // wr

2020-08-02 15:48:31 352

原创 LeetCode114-20.8.2-二叉树展开为链表

今天的每日一题:LeetCode114链接以及我的题解:传送门

2020-08-02 13:56:58 103

原创 LeetCode 889-20.8.1-前后序列构造二叉树

题目链接:见【传送门】官方题解:传送门解题思路对于这题我的思路比较单线条,扩展性也不大:我想象中是这样的:1.以前序遍历作为模板2.对于节点的情况,有三种:叶子节点,只有左子树,有左右子树。一个x指示前序遍历序列,一个y指向后序遍历序列流程如下:将根用节点分析方法分析、结束。分析节点方法(){(1)确定节点的值(2)检查它是否是叶子节点,是返回,否则往下(3)分析左子树(4)检查它是否只有左子树,是返回,否则往下(5)分析右子树(6)结束}=>分析节点方法(){

2020-08-01 16:33:56 127

空空如也

空空如也

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

TA关注的人

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