自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 10. 正则表达式匹配

classSolution{intls,lp;publicbooleanisMatch(Strings,Stringp){ls=s.length();lp=p.length();returnmatch(s,p,0,0);}privatebooleanmatch(Strings,Stringp,inti,intj){if(j=...

2020-12-03 19:35:21 119

原创 301. 删除无效的括号

classSolution{//用集合存储所有正确的字符串,可避免重复privateSet<String>set=newHashSet<>();publicList<String>removeInvalidParentheses(Strings){char[]ss=s.toCharArray();intopen=0,close=0;//...

2020-12-02 21:33:51 165

原创 438. 找到字符串中所有字母异位词

class Solution { public List<Integer> findAnagrams(String s, String p) { char[] arrS = s.toCharArray(); char[] arrP = p.toCharArray(); // 接收最后返回的结果 List<Integer> ans = new ArrayList<>(); ...

2020-11-30 15:38:58 199

原创 128. 最长连续序列

classSolution{publicintlongestConsecutive(int[]nums){Set<Integer>num_set=newHashSet<Integer>();for(intnum:nums){num_set.add(num);}intlongestStreak=0;f...

2020-11-28 19:41:25 111

转载 76. 最小覆盖子串

classSolution{publicStringminWindow(Strings,Stringt){Map<Character,Integer>map=newHashMap<>();for(inti=0;i<t.length();i++){charc=t.charAt(i);map.put(c,map.getOrDefault(c,0)+1)...

2020-11-28 16:11:09 50

原创 399. 除法求值

hard后看classSolution{staticMap<String,String>parents;staticMap<String,Double>val;publicStringfind(Stringx){if(!x.equals(parents.get(x))){StringtmpParent=parents.get(x);...

2020-11-26 19:27:09 55

原创 2020-11-25

classSolution{publicdoublefindMedianSortedArrays(int[]nums1,int[]nums2){intm=nums1.length,n=nums2.length;intleft=(m+n+1)/2;intright=(m+n+2)/2;return(find(nums1,0,nums2,0,left)...

2020-11-25 21:29:25 64

原创 208. 实现 Trie (前缀树)

publicbooleansearch(Stringword){//查找单词Trieroot=this;charw[]=word.toCharArray();for(inti=0;i<w.length;++i){if(root.next[w[i]-'a']==null)returnfalse;root=root.next[w[i]-'a'];}...

2020-11-24 14:50:17 69

原创 437. 路径总和 III

class Solution { public int pathSum(TreeNode root, int sum) { // key是前缀和, value是大小为key的前缀和出现的次数 Map<Integer, Integer> prefixSumCount = new HashMap<>(); // 前缀和为0的一条路径 prefixSumCount.put(0, 1); // 前缀和的递...

2020-11-21 11:40:04 48

原创 31. 下一个排列

题干的意思是:找出这个数组排序出的所有数中,刚好比当前数大的那个数比如当前 nums = [1,2,3]。这个数是123,找出1,2,3这3个数字排序可能的所有数,排序后,比123大的那个数 也就是132如果当前 nums = [3,2,1]。这就是1,2,3所有排序中最大的那个数,那么就返回1,2,3排序后所有数中最小的那个,也就是1,2,3 -> [1,2,3]class Solution { public static void nextPermutation(int[] ..

2020-11-20 11:12:01 69

原创 240. 搜索二维矩阵 II

classSolution{publicbooleansearchMatrix(int[][]matrix,inttarget){if(matrix.length==0||matrix[0].length==0){returnfalse;}introw=0;intcol=matrix[0].length-1;while(row<matrix.l...

2020-11-19 15:44:21 48

原创 215. 数组中的第K个最大元素

classSolution{publicintfindKthLargest(int[]nums,intk){intlen=nums.length;PriorityQueue<Integer>res=newPriorityQueue<>(len,(a,b)->a-b);for(inti=0;i<len;i++){res.add(n...

2020-11-18 11:34:13 63

原创 79. 单词搜索

public boolean exist(char[][] board, String word) { char[] words = word.toCharArray(); for (int i = 0; i < board.length; i++) { for (int j = 0; j < board[0].length; j++) { //从[i,j]这个坐标开始查找 if (dfs(board, words,...

2020-11-17 18:42:34 151

原创 297. 二叉树的序列化与反序列化

publicclassCodec{//Encodesatreetoasinglestring.publicStringserialize(TreeNoderoot){if(root==null){return"";}Queue<TreeNode>queue=newLinkedList<TreeNode>();...

2020-11-16 10:38:50 36

转载 236. 二叉树的最近公共祖先

/***Definitionforabinarytreenode.*publicclassTreeNode{*intval;*TreeNodeleft;*TreeNoderight;*TreeNode(intx){val=x;}*}*/classSolution{publicTreeNodelowestCommonAncestor(TreeNoderoot...

2020-11-12 19:39:04 42

原创 33. 搜索旋转排序数组

划分mid,再用二分排序classSolution{publicintsearch(int[]nums,inttarget){intlow=0,high=nums.length-1,mid=0;//初始化while(low<=high){//相等时只有一个数mid=low+(high-low)/2;if(nums[mid]==target)...

2020-11-11 18:04:31 41

转载 32. 最长有效括号

classSolution{publicintlongestValidParentheses(Strings){intmax=0;Deque<Integer>stack=newArrayDeque<>();stack.add(-1);for(inti=0;i<s.length();i++){//s.length()if(s.charAt(i...

2020-11-10 14:56:01 41

转载 39. 组合总和

classSolution{publicList<List<Integer>>combinationSum(int[]candidates,inttarget){intlen=candidates.length;List<List<Integer>>res=newArrayList<>();if(len==0)returnres;//r...

2020-11-09 11:31:46 45

转载 312. 戳气球

classSolution{//动态规划5ms99.82%publicintmaxCoins(int[]nums){intdp[][]=newint[nums.length][nums.length];if(nums.length==0){//沙雕测试用例[]return0;}for(inti=0;i<nums.length;i++){...

2020-11-09 10:50:36 53

转载 34. 在排序数组中查找元素的第一个和最后一个位置

classSolution{publicint[]searchRange(int[]nums,inttarget){intn=nums.length;if(nums==null||n==0)returnnewint[]{-1,-1};intfirst=findFirst(nums,target);if(first==-1)returnnewint[]{-1,-1};...

2020-11-09 10:20:16 61

原创 48. 旋转图像

classSolution{publicvoidrotate(int[][]matrix){//顺时针旋转,逆时针转换,分圈交换上下左右intadd=0;inttemp=0;intpos1=0;intpos2=matrix[0].length-1;while(pos1<pos2){add=0...

2020-11-07 10:12:49 30

转载 72. 编辑距离

太难了classSolution{intminDistance(Strings1,Strings2){intm=s1.length(),n=s2.length();int[][]dp=newint[m+1][n+1];//basecasefor(inti=1;i<=m;i++)dp[i][0]=i;for(intj=1;j&...

2020-11-06 10:03:19 42

原创 96. 不同的二叉搜索树

假设 n 个节点存在二叉排序树的个数是 G (n),令 f(i) 为以 i 为根的二叉搜索树的个数,则G(n) = f(1) + f(2) + f(3) + f(4) + ... + f(n)G(n)=f(1)+f(2)+f(3)+f(4)+...+f(n)当 i 为根节点时,其左子树节点个数为 i-1 个,右子树节点为 n-i,则f(i) = G(i-1)*G(n-i)f(i)=G(i−1)∗G(n−i)综合两个公式可以得到 卡特兰数 公式G(n) = G(0)*G(n-1)+G(1)*(n

2020-11-05 14:44:14 93

原创 49. 字母异位词分组

returnnewArrayList<>();//不需要具体定义Arrays.sort(c);//Arrays.sort//Stringsort_s=String.valueOf(c);,char没有toStringpublic List<List<String>> groupAnagrams(String[] strs) { //边界条件判断 if (strs == null ||...

2020-11-04 16:09:53 112

转载 560. 和为K的子数组

classSolution{publicintsubarraySum(int[]nums,intk){intn=nums.length;Map<Integer,Integer>m=newHashMap<>();m.put(0,1);intans=0,sum_0_i=0;for(inti=0;i<n;i++){...

2020-11-04 15:22:08 24

原创 22. 括号生成

当前左右括号都有大于 00 个可以使用的时候,才产生分支;产生左分支的时候,只看当前是否还有左括号可以使用;产生右分支的时候,还受到左分支的限制,右边剩余可以使用的括号数量一定得在严格大于左边剩余的数量的时候,才可以产生分支;在左边和右边剩余的括号数都等于 00 的时候结算。curStr 当前递归得到的结果 * @param left 左括号还有几个可以使用 * @param right 右括号还有几个可以使用 * @param res 结果集树状...

2020-11-04 09:55:19 59

原创 3. 无重复字符的最长子串

classSolution{publicintlengthOfLongestSubstring(Strings){//滑动窗口intn=s.length(),ans=0;Map<Character,Integer>map=newHashMap<>();for(intstart=0,end=0;end<n;end++){charss=s.charAt(en...

2020-11-03 10:04:44 75

原创 2. 两数相加

/***Definitionforsingly-linkedlist.*publicclassListNode{*intval;*ListNodenext;*ListNode(intx){val=x;}*}*/classSolution{publicListNodeaddTwoNumbers(ListNodel1,ListNodel2){intcar...

2020-11-02 11:33:06 102

转载 146. LRU缓存机制

publicclassLRUCache{classDLinkedNode{intkey;intvalue;DLinkedNodeprev;DLinkedNodenext;publicDLinkedNode(){}publicDLinkedNode(int_key,int_value){key=_key;value=_value;}...

2020-11-02 10:59:06 192

原创 207. 课程表

classSolution{publicbooleancanFinish(intnumCourses,int[][]prerequisites){//【1,2】,[3,4]int[]indegree=newint[numCourses]; //入度数组List<List<Integer>>edg=newArrayList<>(...

2020-11-02 10:42:24 44

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

对于任意一个节点, 如果最大和路径包含该节点, 那么只可能是两种情况: 1. 其左右子树中所构成的和路径值较大的那个加上该节点的值后向父节点回溯构成最大路径 2. 左右子树都在最大路径中, 加上该节点的值构成了最终的最大路径classSolution{privateintres=Integer.MIN_VALUE;publicintmaxPathSum(TreeNoderoot){getMax(root);...

2020-10-30 15:41:27 35

原创 494. 目标和

原问题等同于: 找到nums一个正子集和一个负子集,使得总和等于target我们假设P是正子集,N是负子集 例如: 假设nums = [1, 2, 3, 4, 5],target = 3,一个可能的解决方案是+1-2+3-4+5 = 3 这里正子集P = [1, 3, 5]和负子集N = [2, 4]那么让我们看看如何将其转换为子集求和问题: sum(P) - sum(N) = targetsum(P) + sum(N) + sum(P) - sum(N)

2020-10-29 17:54:58 91

原创 337. 打家劫舍 III

动态规划+递归无后效性是指如果在某个阶段上过程的状态已知,则从此阶段以后过程的发展变化仅与此阶段的状态有关,而与过程在此阶段以前的阶段所经历过的状态无关。利用动态规划方法求解多阶段决策过程问题,过程的状态必须具备无后效性。 动态规划」通常不关心过程,只关心「阶段结果」,这个「阶段结果」就是我们设计的「状态」。什么算法关心过程呢?「回溯算法」,「回溯算法」需要记录过程,复杂度通常较高。dp[node][j] :这里 node 表示一个结点,以 node 为根结点的树,并且规定了 node 是否...

2020-10-28 10:35:56 51

原创 105. 从前序与中序遍历序列构造二叉树

/***Definitionforabinarytreenode.*publicclassTreeNode{*intval;*TreeNodeleft;*TreeNoderight;*TreeNode(intx){val=x;}*}*/classSolution{publicTreeNodebuildTree(int[]preorder,int[]in...

2020-10-27 16:39:20 37

原创 114. 二叉树展开为链表

/***Definitionforabinarytreenode.*publicclassTreeNode{*intval;*TreeNodeleft;*TreeNoderight;*TreeNode(){}*TreeNode(intval){this.val=val;}*TreeNode(intval,TreeNodeleft,TreeNoderig...

2020-10-26 09:42:40 42

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

DFS 不是按照层次遍历的。为了让递归的过程中同一层的节点放到同一个列表中,在递归时要记录每个节点的深度 level。递归到新节点要把该节点放入 level 对应列表的末尾。当遍历到一个新的深度 level,而最终结果 res 中还没有创建 level 对应的列表时,应该在 res 中新建一个列表用来保存该 level 的所有节点。/***Definitionforabinarytreenode.*publicclassTreeNode{*intv...

2020-10-24 10:07:01 75

原创 98. 验证二叉搜索树

中序遍历/***Definitionforabinarytreenode.*publicclassTreeNode{*intval;*TreeNodeleft;*TreeNoderight;*TreeNode(intx){val=x;}*}*/classSolution{longpre=Long.MIN_VALUE;publicboolean...

2020-10-23 10:49:05 29

转载 647. 回文子串

classSolution{publicintcountSubstrings(Strings){//中心扩展法intans=0;for(intcenter=0;center<2*s.length()-1;center++){//首先是left,有一个很明显的2倍关系的存在,其次是right,可能和left指向同一个(偶数时),也可能往后移动一个(奇数...

2020-10-22 19:05:17 44

转载 416. 分割等和子集

public class Solution { public boolean canPartition(int[] nums) { int len = nums.length; if (len == 0) { return false; } int sum = 0; for (int num : nums) { sum += num; } ...

2020-10-21 19:28:23 39

转载 5. 最长回文子串

classSolution{publicStringlongestPalindrome(Strings){intlen=s.length();if(len<2)returns;boolean[][]dp=newboolean[len][len];char[]charArray=s.toCharArray();intb...

2020-10-20 19:15:02 132

空空如也

空空如也

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

TA关注的人

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