LeetCode
文章平均质量分 70
球球offer
这个作者很懒,什么都没留下…
展开
-
LeetCode专题
LeetCode解题笔记前言前言前段时间因为考试等懈怠了,重新开始做题。决定专门开一篇博客迭代记录了,不然文章散乱。339.除法求值这题是并查集专题,暂时不会用并查集,使用了广度搜索。明天再看看并查集的方法。首先讲字符串先映射成数字,在构建图。图的节点为变量,边的权值为两连接变量的比值。对于queries的查询,从起点出发,广搜得到结果。源码class Solution { public double[] calcEquation(List<List<String&g原创 2021-01-30 21:45:29 · 760 阅读 · 1 评论 -
DAY 80 LeetCode学习笔记
剑指 Offer 32 - II. 从上到下打印二叉树 II前言题目源码前言前段时间一直赶报告,期末。终于结束,开始学习,今天的题目比较简单,普通的BFS。题目官方题目源码/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x;原创 2021-01-06 14:16:08 · 106 阅读 · 0 评论 -
DAY79LeetCode学习笔记
967. 连续差相同的数字前言题目源码前言使用dfs。思路在注释中题目官方题目源码class Solution { List<Integer>ans; public int[] numsSameConsecDiff(int n, int k) { ans=new ArrayList(); if(n==1)return new int[]{0,1,2,3,4,5,6,7,8,9};//为1时,答案肯定为这个 for(in原创 2020-12-21 09:27:44 · 142 阅读 · 0 评论 -
DAY 78 LeetCode学习笔记
733. 图像渲染前言题目源码前言常规广搜和深搜.时间复杂度:m是图像矩阵列数,n是行数广搜: O(m×n)O(m \times n)O(m×n)深搜:O(m×n)O(m \times n)O(m×n)空间复杂度:广搜:O(m×n)O(m \times n)O(m×n),主要在队列花销深搜:O(m×n)O(m \times n)O(m×n),主要在栈花销题目官方题目源码class Solution { // int []dx={1,0,0,-1};原创 2020-12-17 09:28:37 · 165 阅读 · 1 评论 -
DAY 77LeetCode学习笔记
756. 金字塔转换矩阵前言题目源码前言写了两天报告,终于有时间了。感觉是近期做的难的题目。思路是,使用hashmap,将左右节点键成key,value为这个的列表。使用一个helper得到上一层的所有可能节点存放只list。使用深度搜索对每一层进行一个构建,之后判断构成能否构建金字塔题目官方题目源码class Solution {public boolean pyramidTransition(String bottom, List<String> allowed) {原创 2020-12-16 16:17:09 · 127 阅读 · 0 评论 -
DAY 76 LeetCode学习笔记
797. 所有可能的路径前言题目源码前言今天的题目注意的是需要找到所有可能的路径,不能找到就返回。使用bfs搜索。答案在注释中题目官方题目源码class Solution { public List<List<Integer>> allPathsSourceTarget(int[][] graph) { List<List<Integer>> ans=new ArrayList<>(); if原创 2020-12-13 11:43:26 · 132 阅读 · 0 评论 -
DAY 75LeetCode 学习笔记
638. 大礼包前言题目源码前言今天的题目有点意思,看了半天才看懂,第二个礼包的list中的每个list,头几个是礼包中各个物品的数量,最后一个礼包价格,为此最低价格有两种策略,首先第一种是不购买礼包,直接使用needs和price相乘。另外一种是购买礼包,礼包的数量不能大于needs数量,所以这里需要一个判断,其次我们只要迭代的每次更新needs的数量就可以计算出来。本次方法首先没有用map,单纯计算。加了一个map的原因是,减少检查,当needs的数量是出现过的,直接输出即可题目官方题目源码原创 2020-12-12 10:36:09 · 167 阅读 · 0 评论 -
DAY74 LeetCode学习笔记
515. 在每个树行中找最大值前言题目源码前言印象这道题做过,或者说类似方法,最近树的题目做多了。dfs需要记录层数。题目官方题目源码/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this原创 2020-12-10 10:04:54 · 127 阅读 · 0 评论 -
DAY 73 LeetCode学习笔记
872. 叶子相似的树前言题目源码前言简单题继续干,明天下个专题题目官方题目源码/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNo原创 2020-12-09 14:52:08 · 94 阅读 · 0 评论 -
DAY 72 LeetCode 学习笔记
700. 二叉搜索树中的搜索前言题目源码前言今天是简单题,根据二叉搜索树性质,很容易找到子树。同样两种方法题目官方题目源码/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solutio原创 2020-12-08 09:28:22 · 76 阅读 · 0 评论 -
DAY71 LeetCode学习笔记
671. 二叉树中第二小的节点前言题目源码前言感觉做出了,题目都有点类似的方法题目官方题目源码/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } *原创 2020-12-07 09:35:58 · 93 阅读 · 0 评论 -
DAY70 LeetCode学习笔记
669. 修剪二叉搜索树前言题目源码前言简单题,好难哈哈哈哈,菜鸡本鸡盗图一张,图片来源题目官方题目源码/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; }原创 2020-12-06 10:22:17 · 106 阅读 · 0 评论 -
DAY 69 LeetCode学习笔记
662. 二叉树最大宽度前言题目源码前言昨天给忙忘了,树的最大深度,广度和深度都利用了depth和pos,最左边pos2,右边pos2+1.题目官方题目源码/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int原创 2020-12-05 11:22:31 · 202 阅读 · 0 评论 -
DAY68LeetCode学习笔记
655. 输出二叉树前言题目源码前言和昨天的方法类似,都是采用二分思想,左侧填充,右侧填充题目官方题目源码/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution {原创 2020-12-03 10:00:38 · 88 阅读 · 0 评论 -
DAY67LeetCode 学习笔记
654. 最大二叉树前言题目源码前言找最大值构成树,递归题目官网题目源码/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { public TreeNode c原创 2020-12-02 15:08:32 · 109 阅读 · 0 评论 -
DAY 66 LeetCoed学习笔记
538. 把二叉搜索树转换为累加树前言题目源码前言利用好二叉搜索树的特点,中序遍历是递增的,由于累加树是需要大运等于当前节点的和,为此换个思路与,反向遍历二叉树,这样就可以累加。图片来源:图片来源题目官方题目源码/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * Tre原创 2020-12-01 09:26:19 · 142 阅读 · 0 评论 -
DAY 65 LeetCode学习笔记
653. 两数之和 IV - 输入 BST前言题目源码前言这道题就是树和两数之和的一个结合把。只要会遍历基本就能做,用了一个set来方便找。题目官方题目源码/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int原创 2020-11-30 09:27:17 · 127 阅读 · 0 评论 -
DAY64 LeetCode学习笔记
637. 二叉树的层平均值前言题目源码前言和前几天的一样,dfs或者bfs。深度需要两个分别记录每层的count和每层的sum。广度利用层序遍历思想和前几天的题目大同小异题目官方题目源码/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { v原创 2020-11-29 21:21:47 · 75 阅读 · 0 评论 -
DAY 63 LeetCode学习笔记
617. 合并二叉树前言题目源码前言合并二叉树,总体来说就是对树的遍历操作,可以是深度优先,也可以是广度优先。昨晚熬夜到五点,肝不动,九点到实验室。世界对我好点。题目官方题目源码/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val原创 2020-11-26 09:44:58 · 79 阅读 · 0 评论 -
DAY 62 LeetCode学习笔记
606. 根据二叉树创建字符串前言题目源码前言前序遍历,分为四种情况有俩孩子都要括号无左右孩子不要括号有右孩子,无左孩子需先加个空括号,右孩子递归外层加括号有左孩子,无右孩子只要左孩子加括号,右孩子不加括号题目官方题目源码/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right原创 2020-11-25 14:47:47 · 100 阅读 · 0 评论 -
DAY 61 LeetCode学习笔记
590. N叉树的后序遍历前言题目源码前言和昨天的前序遍历基本一致题目官方题目源码/*// Definition for a Node.class Node { public int val; public List<Node> children; public Node() {} public Node(int _val) { val = _val; } public Node(int _val, List原创 2020-11-24 09:12:24 · 105 阅读 · 0 评论 -
DAY 60 LeetCode 学习笔记
589. N叉树的前序遍历前言题目源码前言分别使用迭代和遍历题目官方题目源码/*// Definition for a Node.class Node { public int val; public List<Node> children; public Node() {} public Node(int _val) { val = _val; } public Node(int _val, List<原创 2020-11-23 09:08:14 · 142 阅读 · 0 评论 -
DAY 59 LeetCode学习笔记
563. 二叉树的坡度前言题目源码前言后续遍历,递归。盗图一张过程题目官方题目源码/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * Tree原创 2020-11-22 09:59:48 · 213 阅读 · 0 评论 -
DAY 58 LeetCode学习笔记
559. N叉树的最大深度前言题目源码前言深度优先,递归上!题目官方题目源码/*// Definition for a Node.class Node { public int val; public List<Node> children; public Node() {} public Node(int _val) { val = _val; } public Node(int _val, List<原创 2020-11-21 10:25:10 · 157 阅读 · 0 评论 -
DAY 57 LeetCode学习笔记
530. 二叉搜索树的最小绝对差前言题目源码前言一开始真是脑抽,就想着用个列表中序,然后头两个是最小的哈哈哈哈。但是肯定是相邻的差值最小。题目官方题目源码/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * }原创 2020-11-20 18:14:07 · 106 阅读 · 0 评论 -
DAY 56LeetCode学习笔记
501. 二叉搜索树中的众数前言题目源码前言感觉今天题目好难,竟然还是简单题,使用中序遍历题目官方题目源码/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution {原创 2020-11-19 10:11:45 · 82 阅读 · 0 评论 -
DAY 55 LeetCode 学习笔记
58. 最后一个单词的长度前言题目源码前言首先使用trim去除字符串头尾空格,从尾部开始遍历,没有遇到空格则count+1,遇到空格break题目官方题目源码class Solution { public int lengthOfLastWord(String s) { String word=s.trim(); int len=word.length()-1; int count=0; for(int i=l原创 2020-11-18 09:19:24 · 84 阅读 · 0 评论 -
DAY54 LeetCode学习笔记
292. Nim 游戏前言题目源码前言今天是一道简单题,真是打扰了打扰了。太难了。题目官方题目源码class Solution { public boolean canWinNim(int n) { //动态规划-超时 // if (n<=3){ // return true; // } // boolean ans=false; // boolean pre1=true;原创 2020-11-17 22:00:00 · 90 阅读 · 0 评论 -
DAY 53 LeetCode学习笔记
@[TOC](50. Pow(x, n))前言本题由于是大数,当然最简单无敌的办法就是Math库哈哈哈,还可以采用递归和迭代,递归中分n是奇数或者偶数,迭代就是n二进制中1的个数的地方需要得到x的贡献度。题目官方题目源码嗯,最快的其实是math库哈哈哈哈class Solution { public double cal(double x,long n ){ // 递归法1 // if (n==0){ // return 1.0原创 2020-11-16 09:22:14 · 60 阅读 · 0 评论 -
DAY 52 LeetCode学习笔记
面试题 05.04. 下一个数前言题目源码前言今天是位运算的中等题,采用了一种比较笨的思想,1的个数相同,说明最大不会超过2倍,最小也不会小于两倍,直接统计1的个数,在最大最小区间遍历。题目官方题目源码class Solution { public int[] findClosedNumbers(int num) { int[] res={-1,-1}; long max=(long)num<<1; int min=num&g原创 2020-11-15 21:11:01 · 77 阅读 · 0 评论 -
DAY51 LeetCode 学习笔记
面试题 05.03. 翻转数位前言题目源码前言位运算,逐一比较每一位,记录当前位1的个数,和0之后1的个数题目官方题目源码class Solution { public int reverseBits(int num) { int l=0,r=0,ans=0;//l为0左边的1个数,r是右边 for(int i=0;i<32;i++){ if((num & 1)==1){ r++;//原创 2020-11-13 14:51:56 · 56 阅读 · 0 评论 -
DAY 50 LeetCode学习笔记
面试题 05.01. 插入前言题目源码前言继续移位操作题目官方题目源码class Solution { public int insertBits(int N, int M, int i, int j) { int mask = ((1<<(j-i+1))-1)<<i;//将i-j位置1,其余位置0 mask = ~mask;//将i-j位置0,其余位置1 N &= mask; M <原创 2020-11-12 10:07:00 · 87 阅读 · 0 评论 -
DAY 49 LeetCode 学习笔记
剑指 Offer 15. 二进制中1的个数前言题目源码前言这两天偷懒,写了两题位运算题目官方题目源码public class Solution { // you need to treat n as an unsigned value public int hammingWeight(int n) { int ans=0; while(n!=0){ ans += n & 1; n >&原创 2020-11-11 17:22:04 · 87 阅读 · 0 评论 -
DAY48LeetCode学习笔记
1452. 收藏清单前言题目源码前言今天虽说题目标签是排序,但是考察的基本是并查集,只要找到并集剔除就可以,为此使用了set的containsAll函数。题目官方题目源码class Solution: def peopleIndexes(self, favoriteCompanies: List[List[str]]) -> List[int]: favoriteMap=[set(x) for x in favoriteCompanies] ans原创 2020-11-07 09:44:33 · 149 阅读 · 1 评论 -
DAY47 LeetCode学习笔记
1387. 将整数按权重排序前言题目源码前言今天是topK问题,还是采用了堆,有个要注意的就是权重问题,举个例子,10的权重计算时会重复计算到5的权重,为此,为了减少计算,方法二采用了记忆化的和手段。题目官方题目源码class Solution { // 计算权重,无记忆 public int getF(int num){ int count=0; while(num!=1){ if(num%2==1){原创 2020-11-06 22:08:58 · 66 阅读 · 0 评论 -
DAY46LeetCode 学习笔记
1353. 最多可以参加的会议数目前言题目源码前言复习了好几天的考试,昨天终于考完(考的真的差),今天终于有时间刷leetcode,今天的题目是采用小顶堆做,思路在注释中题目官方题目源码先提交的为方法1,后提交的为方法2class Solution { public int maxEvents(int[][] events) { // 方法1,优先队列 // 根据开始时间升序 // Arrays.sort(events,(o1,o2)-原创 2020-11-05 10:18:09 · 101 阅读 · 0 评论 -
DAY 45 LeetCode学习笔记
969. 煎饼排序前言题目源码前言今天的排序思想,是每次找到最大值索引,将他翻转到最前面,再翻转到最后面,每一轮的翻转就逼近最终答案,由于答案不唯一,可以有不同的翻转方案。题目官方题目源码class Solution { public List<Integer> pancakeSort(int[] arr) { List<Integer> ans=new ArrayList<>(); int index=arr.len原创 2020-10-31 10:35:45 · 81 阅读 · 0 评论 -
DAY44 LeetCode学习笔记
1333. 餐厅过滤器前言题目源码前言昨天做了没发,昨天是个简单的排序题,今天过滤餐厅,主要还是得重写java比较器,最近的排序很多都是用到重写比较器,还是需要多练习题目官方题目源码class Solution { public List<Integer> filterRestaurants(int[][] restaurants, int veganFriendly, int maxPrice, int maxDistance) { List <in原创 2020-10-30 15:31:32 · 77 阅读 · 0 评论 -
DAY43 LeetCode学习笔记
976. 三角形的最大周长前言题目源码前言继续偷懒,继续简单题题目官方题目源码class Solution { public int largestPerimeter(int[] A) { Arrays.sort(A); for(int i=A.length-3;i>=0;--i){ if(A[i]+A[i+1]>A[i+2]){ return A[i]+A[i+1]+A[i+2];原创 2020-10-27 09:16:43 · 77 阅读 · 0 评论 -
DAY 42 LeetCode学习笔记
1370. 上升下降字符串前言题目源码前言偷懒了两天,今天继续,还是排序专题。使用桶计数每个单词的数量。对最小排序和最大排序分别进行循环计算。题目官方题目源码class Solution { public String sortString(String s) { int [] arr=new int[26]; int remian=s.length(); for(int i=0;i<s.length();i++){原创 2020-10-26 09:17:01 · 68 阅读 · 0 评论