- 博客(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 103
原创 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 121
原创 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 139 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 87
原创 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 107
原创 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 112
原创 剑指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 100
原创 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 89
原创 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 93
原创 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 116
原创 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 104
原创 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 95
原创 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<
2020-08-27 19:01:26 115
原创 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 107
原创 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 139
原创 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 131
原创 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 125
原创 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 147
原创 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 107
原创 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 128
原创 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 138
原创 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 124
原创 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 92
原创 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 107
原创 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 154 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 98
原创 LeetCode43-20.8.13-字符串相乘
题目链接:LeetCode43分析:无思路:我的思路:模拟竖式乘法。题解的思路:解法一,分解乘法为加法,模拟加法。解法二, 模拟乘法,解法二变种,对于答案字符的每一个位 置计算别人对它的贡献,而不是解法二的计算当前位置对别人的贡献。解法三,对解法二用快速博里叶变化加速卷积的计算,(这就不用了吧 )自行了解。我的代码:class Solution { public String multiply(String num1, String num2) { int n=n
2020-08-13 21:28:46 86
原创 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 88
原创 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 137
原创 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 119
原创 LeetCode93-20.8.9-复原IP地址
题目链接:LeetCode93分析:开始觉得还行,刚睡醒有点头昏,想得不是很清楚,细节没考虑到,wrong了很多次,主要想法是状态的变换,每一段的不同取法代表不同变换,有些状态可以到达终点,有些不行,判断就行,但就是这个判断要想清楚,剪枝,也就是提前终止不能到达目的地的状态,这也要想好。思路:选择了递归,觉得递归通用一些代码:就我代码来看,可以看出我头脑不是很清楚。class Solution { public List<String> restoreIpAddresses(St
2020-08-09 16:19:46 110
原创 LeetCode99-20.8.8-恢复二叉搜索树
题目链接:LeetCode99分析:看了题解做的,一开始想遍历树找到不符合的一个节点并在树中再次遍历找另一个,后来发现是一团糟。看了题解之后发现只要利用BST中序遍历是有序的特点就能思路清晰的做。如题解所说,有三种解法,时间复杂度都是o(n),空间复杂度分别是o(n),o(h),o(1),三者都利用了BST中序遍历有序。第一种是中序遍历出来,找到交换的点的值,然后遍历找交换的点直接赋另外的一个的值。第二种隐式中序遍历是保存一个中序遍历的前驱的值,手动实现栈和递归的栈原理一样,都是,一直进入到树底部,
2020-08-08 16:40:42 129
原创 牛客网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 225
原创 牛客网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 117
原创 牛客网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 123
原创 牛客网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 281
原创 牛客网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 139
原创 牛客网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 698
原创 LeetCode 889-20.8.1-前后序列构造二叉树
题目链接:见【传送门】官方题解:传送门解题思路对于这题我的思路比较单线条,扩展性也不大:我想象中是这样的:1.以前序遍历作为模板2.对于节点的情况,有三种:叶子节点,只有左子树,有左右子树。一个x指示前序遍历序列,一个y指向后序遍历序列流程如下:将根用节点分析方法分析、结束。分析节点方法(){(1)确定节点的值(2)检查它是否是叶子节点,是返回,否则往下(3)分析左子树(4)检查它是否只有左子树,是返回,否则往下(5)分析右子树(6)结束}=>分析节点方法(){
2020-08-01 16:33:56 142
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人