自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 leetcode 100.相同的树

原题100.相同的树题解方法一 递归方法很简单。对于两个数,判断两个根节点为空或者值相同则继续(否则返回false),之后再以同样的方式判断两个树的左分叉和右分叉是否分别“相同”。这个方法的终止条件是要么遇到值不同的节点(false),要么遇到了最末端的同时为空(true)。本思路java代码示例:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNod

2020-07-30 16:11:39 126

原创 leetcode 91.解码方法

原题91.解码方法题解方法一 dp我们在考虑字符串s从头到尾能代表多少种字母解码方式的时候,实际上是根据前多少位有多少种解码方式来计算的。建立一个动态规划的数组ans,下标为i的那个表示的是,从头到s中的下表为i的那位一共能组成多少种解码。首先开头不能是0,这样的话不管一位一码还是两位一码都匹配不到字母,这时需要直接返回0;另外s长度为0也需要返回0;在考虑其他情况下的ans[i]的时候,需要先看一下i-1位置,两位置能不能组成10到26的数字本方法java代码示例:/*@v7fgg执行

2020-07-29 12:08:25 163

原创 leetcode 剑指offer 54.二叉搜索树的第k大节点

原题剑指offer 54.二叉搜索树的第k大节点题解关于二叉搜索树方法一按照右根左的方式进行搜索,并把值放入栈,直到栈的大小为k,终止,取顶值。本思路java代码示例:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x;

2020-07-28 09:11:14 174

原创 leetcode 面试题 08.06.汉诺塔

原题面试题 08.06.汉诺塔题解方法一我们先从一个盘子开始考虑。一个盘子的时候好想,就是直接把那一个从A挪到C就完事儿了。考虑两个盘子的时候。先把顶上的从A移到B,再把A第二个盘子挪到C,最后再把B上的盘子挪到C。考虑三个盘子的时候。先把1从A挪到C,把2从A挪到B,把1从C挪到B,把3从A挪到C,把1从B挪到A,把2从B挪到C,把1从A挪到C。而回头再次考虑三个盘子的情况,发现,我们是先把1和2在保证上小下大的情况下,从A挪(借助C作为临时中转站)到B,再把3挪到C,最后再把1和2以同样

2020-07-24 22:00:28 186

原创 leetcode 1025.除数博弈

原题1025.除数博弈2020年7月24日 每日一题题解方法一 数学判断奇输偶赢。本思路java代码示例://2020.05.13 17:41//执行用时 :0 ms, 在所有 Java 提交中击败了100.00%的用户//内存消耗 :36.7 MB, 在所有 Java 提交中击败了10.00%的用户class Solution { public boolean divisorGame(int N) { return N%2==0; }}/*数字N

2020-07-24 08:31:02 150

原创 leetcode 873.最长斐波那契子数列长度

原题873.最长斐波那契子数列长度题解方法一 暴力集合法为了找出最长的斐波那契数列长度,我们不不妨把所有的斐波那契数列尽可能的长度找出来,再取得其中的最大值。具体方法是,首先把数组中所有的数字放入一个hashset中以备查验,再利用双指针确定数列的前两个数字(事实上,我们想象中的最短是2,而在实际输出答案的时候,小于3的都视为长度0),依次查找两个数字的和是否在集合中,是的话,把两数之和看做较大的数,原先较大的数看做较小的数,继续上述步骤,直到集合中找不到两数之和为止。本思路java代码示例:

2020-07-22 22:06:10 414

原创 leetcode 154.寻找旋转排序数组中的最小值 II

原题154.寻找旋转排序数组中的最小值 II同 剑指offer 11.旋转数组的最小数字2020年7月22日 每日一题题解方法一 暴力法旋转之前的数组是排好序的了的,那么说明最小值的那个地方一定比前一个值是小的,这样我们找到了这样的值就直接返回即可。需要注意的是,假如说数组旋转后依旧是单增,那么我们找不到这样的值,这时直接返回首项即可。本思路java代码示例:/*作者@v7fgg *执行用时 :0 ms, 在所有 Java 提交中击败了100.00%的用户 *内存消耗 :39.7 MB

2020-07-22 15:07:25 94

原创 leetcode 844.比较含退格的字符串

/*@v7fgg执行用时:8 ms, 在所有 Java 提交中击败了5.99%的用户内存消耗:40 MB, 在所有 Java 提交中击败了33.33%的用户2020年7月21日 21:48*/class Solution { public boolean backspaceCompare(String S, String T) { return newstring(S).equals(newstring(T)); } public String newst

2020-07-22 08:47:19 75

原创 leetcode 167.两数之和 II-输入有序数组

原题167.两数之和 II-输入有序数组2020年7月20日 每日一题题解方法一 暴力法遍历所有数字对儿,直到找到和为target的两个数。本思路java代码示例:/*@v7fgg执行用时:218 ms, 在所有 Java 提交中击败了10.25%的用户内存消耗:40 MB, 在所有 Java 提交中击败了6.67%的用户2020年7月20日 8:23*/class Solution { public int[] twoSum(int[] numbers, int tar

2020-07-20 10:30:24 184

原创 leetcode LCP 07.传递信息

原题LCP 07.传递信息题解方法一 动态规划动态规划说明某一种状态一定与前一种或者前几种状态有关。我们不妨设立一个二维数组ans,其中ans[j][i]表示的是,从0开始,通过j+1步到达i的方式种数。在一开始的时候,我们需要初始化第0行,也就是从0位置开始,第一步就能到达的地方;之后再根据从1到k-1,每一种步数用一个循环周期,在每个循环周期内遍历relations,ans[j][i]等于所有ans[j-1][k]的和,其中k表示的是relation中第二位置是i的第一个位置的值。本思路j

2020-07-19 15:59:28 218

原创 leetcode 1267.统计参与通信的服务器

原题1267.统计参与通信的服务器题解方法一 暴力法就是遍历数组矩阵中所有1 的位置,查看在本行本列有木有其他的1,有的话说明可以通信。本方法java代码示例:/*@v7fgg执行用时:3 ms, 在所有 Java 提交中击败了72.48%的用户内存消耗:47 MB, 在所有 Java 提交中击败了100.00%的用户2020年7月18日 15:44*/class Solution { public int countServers(int[][] grid) {

2020-07-18 16:03:12 232

原创 leetcode 97.交错字符串

原题97.交错字符串2020年7月18日 每日一题题解我们可以把s1和s2拆为若干份并且交替排列组成一个字符串s4,s1和s2中的字母先后顺序与在生成的s4中的字母顺序相同,题目的意思是,假如某个s4与s3相同,那么就是真。方法一要想判断s1和s2所有的字母可否交替组成s3,我们需要预先判断一下部分的s1前缀和部分s2前缀能否组成部分的s3前缀,这就引出了动态规划。我们设置一个boolean类型的二维数组keyi[][],坐标ij来表示的是s1的前i位和s2的前j位可否交替表示s3的前i+j位

2020-07-18 14:53:08 212

原创 leetcode 1347.制造字母异位词的最小步骤

原题1347.制造字母异位词的最小步骤题解本题的实质就是,在不考虑字母顺序的情况下,统计两个单词有多少个字母是相同的。方法一既然单词中的字母是不一定按照顺序排列的,我们不妨先把单词中字母按顺序排列(方法是先转化成数组,然后sort)。用两个指针指向排序后的两个数组,遇到相同的字母时,记录相同字母个数的变量自加1,俩指针分别后移;遇到不同的时候,较小的那个指针后移,直到某一个数组指针移出数组。用单词长度减去相同字母个数就是所求。本思路java代码示例:/*@v7fgg执行用时:21 ms,

2020-07-18 14:26:55 151

原创 leetcode 35.搜索插入位置

原题35.搜索插入位置2020年7月17日 每日一题题解方法一暴力法。由于是排过序的数组,那么我们就可以遍历数组,当找到第一个不小于target的值的数时,说明此处是插入的位置。而如果所有遍历完之后,都没有发现不小于target的数,说明应该插入到最后面,也即是nums.length的位置。本思路java代码示例:/*@v7fgg执行用时:0 ms, 在所有 Java 提交中击败了100.00%的用户内存消耗:39.7 MB, 在所有 Java 提交中击败了5.55%的用户2020年

2020-07-17 11:16:17 105

原创 leetcode 剑指offer 59-II.队列的最大值

原题剑指offer 59-II.队列的最大值/*@v7fgg执行用时:46 ms, 在所有 Java 提交中击败了14.83%的用户内存消耗:48.1 MB, 在所有 Java 提交中击败了100.00%的用户2020年7月16日 19:53*/class MaxQueue { List<Integer> list; public MaxQueue() { list=new ArrayList<>(); } p

2020-07-17 07:33:51 114

原创 leetcode 410.分割数组的最大值

原题410.分割数组的最大值题解方法一 试值+二分1、 我们既然要求出的是每组数字之和的最大值,并且尽可能让这个最大值最小,这样的话暴力组合出所有情况不现实。那么我们就可以反着来思考,那就是,假设一个最小的“和的最大值”,假如设为max,再带入到数组中看是否能够保证每组和的值都不大于max的情况下,分出的组数不大于m。2、 假设max的临时值是max1,我们可以不断遍历数组,同时,从第一个数字开始累加,累加值到sum,每当累加到最大的不大于max1的值的时候(事实是当累加到大于m的时候,把数组

2020-07-16 16:08:00 242

原创 leetcode 面试题 16.26.计算器

原题面试题 16.26.计算器题解方法一 转化为若干数字的和总说:在多则运算中,乘法和除法的优先级比加减法要高,因此在运算的时候,我们要先把数字两边有乘除号的那些数字看做整体优先运算出结果,然后再把所有代表结果的数字的数字相加就是最终的结果。思路步骤:1、 首先建立一个ArrayList list来存储所有待加的数字(当然如果某个数字或者某个乘除字符段之前是减号,那我们在存入数字的实后可以去相反数,这一点在下面步骤4会提到的);2、 利用一个变量i作为指针,从头到尾来遍历s的所有字符,当然

2020-07-15 16:13:46 262

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

原题96.不同的二叉搜索树2020年7月15日 每日一题题解方法一 递推本思路java代码示例:/*@v7fgg执行用时:0 ms, 在所有 Java 提交中击败了100.00%的用户内存消耗:36.3 MB, 在所有 Java 提交中击败了7.69%的用户2020年7月15日 8:06*/class Solution { public int numTrees(int n) { if(n<2){return 1;} int ans[]

2020-07-15 08:22:26 92

原创 leetcode 面试题48.最长重复字符的子字符串

/*@v7fgg执行用时:199 ms, 在所有 Java 提交中击败了5.02%的用户内存消耗:40.6 MB, 在所有 Java 提交中击败了100.00%的用户2020年7月14日 22:04*/class Solution { public int lengthOfLongestSubstring(String s) { int ans=0; for(int i=0;i<s.length()&&s.length()-i>

2020-07-14 22:32:59 191

原创 leetcode 剑指offer 62.圆圈中最后剩下的数字

/*模拟法@v7fgg执行用时:1077 ms, 在所有 Java 提交中击败了17.67%的用户内存消耗:41.5 MB, 在所有 Java 提交中击败了100.00%的用户2020年7月14日 16:01*/class Solution { public int lastRemaining(int n, int m) { List<Integer> ans=new ArrayList<>(); for(int i=0;i<

2020-07-14 21:42:14 128

原创 leetcode 120.三角形最小路径和

原题120.三角形最小路径和2020年7月14日 每日一题题解方法一 回溯法建立回溯函数,在函数内,自顶向下逐渐分支并计算和,把每一条的和都求最小值。但是,此方法的复杂程度随着层数成指数型爆炸,这个思路也因此超时。不成功的代码://42 / 43 个通过测试用例 状态:超出时间限制class Solution { int ans=Integer.MAX_VALUE; public int minimumTotal(List<List<Integer>&

2020-07-14 11:29:12 102

原创 leetcode 350.两个数组的交集 II

原题350.两个数组的交集 II2020年7月13日 每日一题题解方法一利用hashmap来记录数组1的每个数字的个数,之后再遍历数组2,找出与数组1中的相同的数字,但是要取数量较小的那个,一个个加入到list中,再把它转化为数组。本思路java代码示例:/*hashmap法 *作者@v7fgg *执行用时 :7 ms, 在所有 Java 提交中击败了22.05%的用户 *内存消耗 :39.9 MB, 在所有 Java 提交中击败了5.13%的用户 *2020年5月25日 21:56

2020-07-13 08:12:11 189 1

原创 leetcode 174.地下城游戏

原题174.地下城游戏2020年7月12日 每日一题原题方法一 动态规划建立一个和原矩阵维度相同的矩阵,用于表示进入每一个格子之前应该至少有的生命值才能保证在之后到达最后一个格子之后生命力至少为1。本思路java代码示例:/*@v7fgg执行用时:2 ms, 在所有 Java 提交中击败了96.34%的用户内存消耗:39.3 MB, 在所有 Java 提交中击败了100.00%的用户2020年7月12日 18:19*/class Solution { public int

2020-07-13 07:32:40 162

原创 leetcode 315.计算右侧小于当前元素的个数

原题315.计算右侧小于当前元素的个数class Solution { public List<Integer> countSmaller(int[] nums) { List<Integer> ans=new ArrayList<>(); for(int i=0;i<nums.length;i++){ int k=0; int x=nums[i];

2020-07-12 06:59:27 83

原创 leetcode 188.买卖股票则最佳时机 IV

/*@v7fgg执行用时:437 ms, 在所有 Java 提交中击败了5.02%的用户内存消耗:40 MB, 在所有 Java 提交中击败了11.11%的用户2020年7月10日 16:48*/class Solution { public int maxProfit(int k, int[] prices) { if(prices.length==0||k==0){return 0;} k=Math.min(k,prices.length/2);//防

2020-07-11 07:29:09 154

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

/*@v7fgg执行用时:35 ms, 在所有 Java 提交中击败了5.48%的用户内存消耗:49 MB, 在所有 Java 提交中击败了100.00%的用户2020年7月10日 19:56*/class Solution { public int maxProfit(int[] prices, int fee) { if(prices.length==0){return 0;} int ans[][]=new int[prices.length][2]

2020-07-10 22:47:03 92

原创 leetcode123.买卖股票的最佳时机 III

原题123.买卖股票的最佳时机 III题解方法一 动态规划递归建立一个三维数组,第二维中0代表不持股,1代表持股;第三维中0代表已卖0次,1代表已卖1次,2代表已卖2次。本思路java代码如下:/*@v7fgg执行用时:13 ms, 在所有 Java 提交中击败了12.84%的用户内存消耗:41.1 MB, 在所有 Java 提交中击败了35.71%的用户2020年7月10日 15:08*/class Solution { public int maxProfit(int

2020-07-10 16:14:20 120

原创 leetcode 309.买卖股票的时机含冷冻期

原题309.买卖股票的时机含冷冻期2020年7月10日 每日一题/*@v7fgg执行用时:2 ms, 在所有 Java 提交中击败了19.55%的用户内存消耗:39.2 MB, 在所有 Java 提交中击败了11.11%的用户2020年7月10日 10:36*/class Solution { public int maxProfit(int[] prices) { if(prices.length==0){return 0;} int ans[]

2020-07-10 11:13:44 82

原创 leetcode 84.柱状图中最大的矩形

原题84.柱状图中最大的矩形原题方法一 暴力法1遍历所有的可能水平长度,行程滑窗,并且在滑窗内找到最短的高度,循环找到最小面积。(注意需要进行情况过滤,否则超时)本思路java代码示例:/*暴力法1@v7fgg执行用时:636 ms, 在所有 Java 提交中击败了35.28%的用户内存消耗:41.6 MB, 在所有 Java 提交中击败了17.39%的用户2020年7月9日 16:26*/class Solution { public int largestRectang

2020-07-09 19:58:07 91

原创 leetcode 85.最大矩形

/*@v7fgg执行用时:19 ms, 在所有 Java 提交中击败了20.59%的用户内存消耗:43.5 MB, 在所有 Java 提交中击败了13.33%的用户2020年7月9日 15:05*/class Solution { public int maximalRectangle(char[][] matrix) { if(matrix.length==0||matrix[0].length==0){return 0;} int[][] zuida1

2020-07-09 16:30:34 128

原创 leetcode 36.有效的数组

原题36.有效的数组/*@v7fgg执行用时:3 ms, 在所有 Java 提交中击败了57.57%的用户内存消耗:40.2 MB, 在所有 Java 提交中击败了100.00%的用户2020年7月8日 14:01*/class Solution { public boolean isValidSudoku(char[][] board) { //先判断行 for(int i=0;i<9;i++){ Set<Cha

2020-07-08 14:41:51 161

原创 leetcode 面试题 16.11.跳水板

原题面试题 16.112020年7月8日 每日一题题解方法一很简单的数学办法,我们以短的板子为基准,那么最短的长度就是k块儿短板,之后每次减少一块短板,增加一块长板,直到长板增加到了k块(也就是短板0块儿)。需要注意两种特殊情况,k–0以及长短板子长度相同。本思路java代码示例:/*@v7fgg执行用时:2 ms, 在所有 Java 提交中击败了96.06%的用户内存消耗:47.8 MB, 在所有 Java 提交中击败了100.00%的用户2020年7月8日 6:53*/cl

2020-07-08 07:38:03 148

原创 leetcode 64.最小路径和

原题64.最小路径和方法一动态规划。此方法java代码示例:/*@v7fgg执行用时:3 ms, 在所有 Java 提交中击败了89.20%的用户内存消耗:42.8 MB, 在所有 Java 提交中击败了24.24%的用户2020年7月7日 20:37*/class Solution { public int minPathSum(int[][] grid) { int ans[][]=new int[grid.length][grid[0].length];

2020-07-07 22:33:56 88

原创 leetcode 112.路径总和

原题112.路径总和2020年7月7日 每日一题题解方法一利用递归的方法。从总的节点开始,依次判断从下一级的节点和是否为“sum-到目前节点个和”,如果到这个节点发现没有下一节左右节点,则需要判断此时的总和是否为目标和。本思路java代码示例:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode rig

2020-07-07 11:26:29 106 2

原创 leetcode 1504.统计全1子矩形

原题1504.统计全1子矩形2020年7月5日 196周赛第三题题解方法一暴力法。首先四个循环确定矩形的长方形的左上和右下角,之后逐个比对矩形里面的数字是不是1。本思路java代码示例:/*暴力法通过@v7fgg执行用时:285 ms, 在所有 Java 提交中击败了100.00%的用户内存消耗:40.9 MB, 在所有 Java 提交中击败了100.00%的用户2020年7月5日 13:13*/class Solution { public int numSubmat(

2020-07-05 14:48:57 738

原创 leetcode 1503.所有蚂蚁掉下来前的最后一刻

原题1503.所有蚂蚁掉下来前的最后一刻2020年7月5日 196周周赛第二题题解方法一先不要想着模拟,本题的意思是,根本没有什么对碰后反向,而是该走走。那么时间就是每个方向上最后一个走到边上的时间的最大值。本思路java代码示例:/*@可爱抱抱执行用时:6 ms, 在所有 Java 提交中击败了100.00%的用户内存消耗:40 MB, 在所有 Java 提交中击败了100.00%的用户2020年7月5日 13:29*/class Solution { public i

2020-07-05 13:40:38 323

原创 leetcode 32.最长有效括号

原题32.最长有效括号2020年7月4日 每日一题题解方法一 暴力法(超时)本方法利用的是滑窗,由大到小,圈住所有的坑能的字符子串,之后判断子串是否为有效括号。而判断某子串是否为有效括号的方法是利用栈来给左右括号配对,最后看是否完全配对。此方法超时。java代码示例:class Solution { public int longestValidParentheses(String s) { int l=s.length()/2*2; for(int

2020-07-04 14:37:30 124

原创 leetcode 面试题05.04.下一个数

原题面试题05.04.下一个数题解方法一 暴力法(代码通过但是很多手输实例超时)本方法就是从给定的数字num两侧分别开始找比特数域num相同的数,每一边找到就立刻停止寻找。本思路java代码示例:/*执行用时:0 ms, 在所有 Java 提交中击败了100.00%的用户内存消耗:36.8 MB, 在所有 Java 提交中击败了100.00%的用户2020.07.02 14:19*/class Solution { public int[] findClosedNumber

2020-07-03 14:36:49 203

原创 leetcode 441.排列硬币

原题441.排列硬币题解方法一由于从1加到你m的公式是m(m+1)/2,令该式等于n,用二次函数的求根公式,再把结果正数取整就行了。本思路java代码示例:/*注意不要超范围 *作者@v7fgg *执行用时 :1 ms, 在所有 Java 提交中击败了100.00%的用户 *内存消耗 :37.1 MB, 在所有 Java 提交中击败了16.67%的用户 *2020年5月25日 8:45 */class Solution { public int arrangeCoins(i

2020-07-02 19:35:21 141

原创 leetcode 378.有序矩阵中第K小的元素

原题378.有序矩阵中第K小的元素2020年7月2日 每日一题题解方法一基本思路就是把矩阵中的所有元素都放进一个数组里面或者一个ArrayList里面,之后按照升序排序,再取出编号为k-1的那个数。本思路java代码示例:/*@v7fgg执行用时:25 ms, 在所有 Java 提交中击败了21.18%的用户内存消耗:44.5 MB, 在所有 Java 提交中击败了15.38%的用户2020年7月2日 7:36*/class Solution { public int k

2020-07-02 10:29:10 158

空空如也

空空如也

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

TA关注的人

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