- 博客(46)
- 收藏
- 关注
原创 分发糖果
一、题目描述题目链接:https://leetcode-cn.com/problems/candy/二、题解参考https://leetcode-cn.com/problems/candy/solution/candy-cong-zuo-zhi-you-cong-you-zhi-zuo-qu-zui-da-/只能说妙啊三、代码 public int candy(int[] ratings) { int len = ratings.length;..
2020-09-22 15:06:39
258
原创 最多可以参加的会议数目
一、题目描述题目链接:https://leetcode-cn.com/problems/maximum-number-of-events-that-can-be-attended/二、题目分析题解参考:https://leetcode-cn.com/problems/maximum-number-of-events-that-can-be-attended/solution/sao-miao-suan-fa-tan-xin-by-lucifer1004/本题的目的是尽可能地多参加会议
2020-09-15 15:02:26
677
1
原创 K 次操作转变字符串
一、题目描述题目链接:https://leetcode-cn.com/problems/can-convert-string-in-k-moves/二、题目分析题解参考:https://leetcode-cn.com/problems/can-convert-string-in-k-moves/solution/ji-shu-fa-by-jason-2-5/理解清楚题意再进行解答。首先一个比较直观的是每个字母的变换次数都是可以计算出来的,我们只需要判断每个字母的转换是不是小于题目的.
2020-09-15 08:39:00
513
原创 完全二叉树的节点数
一、题目描述题目链接:https://leetcode-cn.com/problems/count-complete-tree-nodes/二、题目分析题解膜拜:https://leetcode-cn.com/problems/count-complete-tree-nodes/solution/chang-gui-jie-fa-he-ji-bai-100de-javajie-fa-by-xia/真的是妙蛙种子吃着妙脆角进了妙妙屋,妙到家了。这道题结合完全二叉树的性质,再想象一.
2020-09-07 20:40:24
330
原创 部分排序
一、题目描述题目链接:https://leetcode-cn.com/problems/sub-sort-lcci/二、题目分析题解参考:https://leetcode-cn.com/problems/sub-sort-lcci/solution/yi-bian-bian-li-shuang-zhi-zhen-by-chen-wei-zhe/我们从左到右遍历,如果说数组是升序的,就不用操作,如果遇到一个数字跟前面的数组无法组成升序序列,那这个数字就是需要交换的,我们记录这个下标位.
2020-08-27 09:51:34
727
原创 生存人数
一、题目描述题目链接:https://leetcode-cn.com/problems/living-people-lcci/二、题目分析参考题解:https://leetcode-cn.com/problems/living-people-lcci/solution/java2msyong-shu-zu-bao-cun-mei-nian-xin-zeng-ren-s/因为年份是有限的,所以我们可以计算每个年份新增了多少人,减少了多少人,计算出每一年人数的变化情况,然后从1900开始遍历
2020-08-26 20:07:15
530
原创 面试之手撕代码
一、前言本文为自己的学习记录,记录一下自己在面试中遇到的一些手撕代码(非算法题目),也是自己复习方便二、设计模式1、工厂模式(1)简单工厂// 抽象产品角色public interface Product { void getInfo();}// 真实产品Apublic class ProductA implements Product { @Override public void getInfo() { System.ou.
2020-08-11 23:17:30
2560
原创 最大得分
一、题目描述题目连接:https://leetcode-cn.com/problems/get-the-maximum-score/二、题目分析题解参考:https://leetcode-cn.com/problems/get-the-maximum-score/solution/java-double-points-by-carl-x-2/这道题好妙啊,虽然第一眼就觉得使用双指针,但是不知道从哪下手,看了题解后,妙啊妙啊。这道题的关键在于两个数组如果有元素相同,就可以选择切换.
2020-08-04 20:00:01
283
原创 单词拆分
一、题目描述题目链接:https://leetcode-cn.com/problems/word-break/二、题目分析题解:https://leetcode-cn.com/problems/word-break/solution/dan-ci-chai-fen-by-leetcode-solution/这道题使用的是类似前缀和的思路解决,我们想找出s的是否能切割出一些子串,这些子串全都是在wordDict中,判断在wordDict中其实比较好写,因为String是不可变的,所以.
2020-07-30 09:22:24
459
原创 戳气球
一、题目描述题目链接:https://leetcode-cn.com/problems/burst-balloons/二、题目分析第一眼看到题目的思路还是很直观的,就是dfs列举所有情况,然后使用memo来剪枝,但是还是超时了,以为是压缩状态写得不对,看了题解才知道自己还是太年轻了。题解参考:https://leetcode-cn.com/problems/burst-balloons/solution/zhe-ge-cai-pu-zi-ji-zai-jia-ye-neng-zuo.
2020-07-27 10:53:44
182
原创 规划兼职工作
一、题目描述题目链接:https://leetcode-cn.com/problems/maximum-profit-in-job-scheduling/二、题目分析题解参考:https://leetcode-cn.com/problems/maximum-profit-in-job-scheduling/solution/java-dong-tai-gui-hua-by-zhi-94/一个比较直观的想法,就是假设我们是一个一个工作加的,每加一个工作,我们有两种选择,一是新的这个工.
2020-07-21 10:44:20
451
原创 掷色子模拟
一、题目描述题目链接:https://leetcode-cn.com/problems/dice-roll-simulation/二、题目分析当我们掷色子的时候,投出什么点数都跟前面的点数无关,但是题目给了一点限制,就是连续的点数不能超过某一个值,因此这是一个有限制的排列。对于这种设计连续的题目,可以考虑用高维数组来解决。这里我们使用dp[i][j][k]来表示,在投 i 次的情况下,以连续的 k 次 j 点数结尾的排列组合。这里k有两种种情况。1、k = 1,即以一个 j 结.
2020-07-21 09:23:50
1195
原创 最大平均值和的分组
一、题目描述题目链接:https://leetcode-cn.com/problems/largest-sum-of-averages/二、题目分析题解参考:https://leetcode-cn.com/problems/largest-sum-of-averages/solution/java-di-gui-jie-fa-by-don-vito-corleone-12/本题使用动态规划的思想解决,首先需要找到状态转移方程。我们使用一个数组dp[i][k]来表示在前i个数的情.
2020-07-20 20:08:13
383
原创 填充书架
一、题目描述题目链接:https://leetcode-cn.com/problems/filling-bookcase-shelves/二、题目分析题解参考:https://leetcode-cn.com/problems/filling-bookcase-shelves/solution/chang-gui-dong-tai-gui-hua-jie-fa-by-liu-li-cui-ca/本题的策略是,一本一本地往书架上放书,每一本新书我们都放到下面一层空的书架上,然后再把上面.
2020-07-14 22:25:27
332
原创 新21点
一、题目描述题目链接:https://leetcode-cn.com/problems/new-21-game/二、题目分析参考题解:https://leetcode-cn.com/problems/new-21-game/solution/javani-xiang-dong-tai-gui-hua-jie-jue-shuang-100-b/具体的想法可以看看题解,我也说不出什么新的东西,在下面会在代码上加上自己的注解,帮助理解。三、代码 public dou..
2020-07-14 09:21:33
225
原创 石子游戏
一、题目描述题目链接:https://leetcode-cn.com/problems/stone-game/二、题目分析可以使用搜索的方法来解决。对于每次操作,都有两个选择,拿最左边的石堆或者拿最右边的石堆,剩下的可以到下一层递归,而且这里是可以使用memo优化的,因为先拿左边再拿右边,和先拿右边再拿左边是等价的。三、代码 private Integer[][] memo; public boolean stoneGame(int[] piles) {..
2020-07-13 11:36:07
386
1
原创 出界的路径数
一、题目描述题目链接:https://leetcode-cn.com/problems/out-of-boundary-paths/二、题目分析经典记忆搜索,题解参考:https://leetcode-cn.com/problems/out-of-boundary-paths/solution/ji-yi-hua-di-gui-chao-jian-ji-by-pwrliang/三、代码 private int[] dirs = {0,1,0,-1,0}; ..
2020-07-12 20:04:41
264
原创 K个逆序对数组
一、题目描述题目链接:https://leetcode-cn.com/problems/k-inverse-pairs-array/二、题目分析题解:https://leetcode-cn.com/problems/k-inverse-pairs-array/solution/dong-tai-gui-hua-xiang-jie-by-jerry_nju/题目有两个变量,对于这种题可以尝试用二维dp解决,但是还是得分析明白。我们先不考虑k,假设我们有n个数,我们如何找到所有可能.
2020-07-10 09:30:32
602
原创 比特位计数
一、题目描述题目链接:https://leetcode-cn.com/problems/counting-bits/二、题目分析题解参考:https://leetcode-cn.com/problems/counting-bits/solution/hen-qing-xi-de-si-lu-by-duadua/自己分析没分析出来,看完题解,忍不住妙出了声。对于数字有两类,偶数与奇数,从二进制的角度看,奇数的二进制标示肯定比前面一个偶数多1,因为偶数的最低为0,而因为最低为为0,则让.
2020-07-08 20:05:50
212
原创 最长湍流子数组
一、题目描述题目链接:https://leetcode-cn.com/problems/longest-turbulent-subarray/二、题目分析这道题跟摆动数组非常类似,可以说用同种解法了,区别就是数组是否连续。可以参考博客:https://mp.youkuaiyun.com/console/editor/html/107149523三、代码 public int maxTurbulenceSize(int[] A) { int len = A.le..
2020-07-08 09:07:41
197
原创 最大的正方形
一、题目描述题目链接:https://leetcode-cn.com/problems/maximal-square/二、题目分析我们使用动态规划来解决这一问题。在动手前我们要先想想对于一个1,构成正方形的条件,就是他的左边,上边,左上角全是1,这样子他才可以和他们构成正方形。根据这个思想,我们可以使用一个dp[i][j]来标示,当前i,j的位置能构成的正方形的最大面积,对于每一个位置,我们可以获取它上面,左边,左上角能构成的正方形的最大面积,然后在里面取最小值,利用那个最小值可以跟当.
2020-07-07 21:07:10
297
原创 分汤
一、题目描述题目链接:https://leetcode-cn.com/problems/soup-servings/二、题目分析参考题解:https://leetcode-cn.com/problems/soup-servings/solution/leetcode-fen-tang-dong-tai-gui-hua-ji-yi-sou-suo-b/还有评论:https://leetcode-cn.com/problems/soup-servings/comments/题目把我看得.
2020-07-07 20:34:59
566
原创 最长重复子数组
一、题目描述题目链接:https://leetcode-cn.com/problems/maximum-length-of-repeated-subarray/二、题目分析这道题是一道典型的动态规划题。使用一个二位数组dp[i][j]来表示两个数组在[i: ]和[j: ]的最长公共前缀,每次公共前缀的计算与后一个位置相关,因此我们做一个从后往前的dp。看代码应该比较明晰。三、代码链接:https://leetcode-cn.com/problems/maximum-..
2020-07-07 09:25:40
136
原创 摆动序列
一、题目描述题目链接:https://leetcode-cn.com/problems/wiggle-subsequence/二、题目分析参考题解:https://leetcode-cn.com/problems/wiggle-subsequence/solution/bai-dong-xu-lie-by-leetcode/看到这个题目有个大概的思路,对于每个位置,向前找到一个可以让它称为摆动数组的位置,但是因为有两个状态,向上和向下,因此一直不知道怎么写,看完题解之后忍不住妙了出来。.
2020-07-06 09:12:35
190
原创 二叉搜索树序列
一、题目描述题目链接:https://leetcode-cn.com/problems/bst-sequences-lcci/二、题目分析参考题解:https://leetcode-cn.com/problems/bst-sequences-lcci/solution/quan-pai-lie-de-bian-xing-by-fresh_zhe/题目很直接地跟我们说了是要列举所有情况,因此我们可以想到使用回溯遍历所有可能,获得答案。但是应该如何进行搜索呢,其实还需要对题目进行分析。.
2020-07-05 09:26:18
476
原创 最低票价
一、题目描述题目链接:https://leetcode-cn.com/problems/minimum-cost-for-tickets/二、题目分析这类型的题最直接的思路就是列举所有情况,自然就想到了dfs,而再这个过程中一般可以使用一个memo来进行优化。我们使用memo[i]来记录,i表示从第i天开始旅游需要花费的最小钱数。我们使用ticketDP(inti)进行递归,i代表从第i天开始旅游,若memo[i]存在,则说明计算过了,直接返回,如果没有,我们就遍历1,7,30天..
2020-07-04 10:03:08
215
原创 解码方法2
一、题目描述题目链接:https://leetcode-cn.com/problems/decode-ways-ii/二、题目分析这道题使用动态规划进行解决,主要要分析清楚可能的情况。我们使用一个数组dp[i]来表示[0,i]的字符串可以解码的类型总类,对于每一个i,我们有两种做法,一是自己单独形成字母,二是与前面的数形成字母。对于*和数字,我们要分开讨论。若是*号,那么单独形成字母时可以有9种情况,dp[i] = dp[i-1] * 9;若要跟前面的一位形成数字,又有三种情况:.
2020-07-03 09:06:46
2513
原创 K 次串联后最大子数组之和
一、题目描述题目链接:https://leetcode-cn.com/problems/k-concatenation-maximum-sum/
2020-07-01 20:00:33
389
原创 每个人戴不同帽子的方案数
一、题目描述题目链接:https://leetcode-cn.com/problems/number-of-ways-to-wear-different-hats-to-each-other/二、题目分析emm这道题思路其实还是不难的,但是优化还是比较难想。本菜鸡就写一下自己的想法然后再看看别人是怎么写的最终通过吧。首先一个最直观的想法,就是使用dfs列举所有可能,然后计数。而且我们很容易能想到其实在搜索的过程中会有很多重复使用到的值。例如A喜欢2,3,4帽子,B喜欢2,3,4帽子,C.
2020-06-29 21:15:33
354
原创 石子游戏 II
一、题目描述题目链接:https://leetcode-cn.com/problems/stone-game-ii/二、题目分析本题参考题解:https://leetcode-cn.com/problems/stone-game-ii/solution/java-dong-tai-gui-hua-qing-xi-yi-dong-17xing-by-lg/下面写一下自己的一些理解。首先,由于石子的个数必为整数,若M大于剩余的石子数,那我们一起把它们拿走便是最优的,如果说一次拿不完,那.
2020-06-29 09:15:28
348
原创 Java与Python间通过socket的调用
一、前言最近因为大作业的需要在捣鼓一些东西,遇到了一个尴尬的情况,有些工作是在python做的,而另外的工作是在java做的。其实理论上都可以改成同一种语言完成,但是,大家都懂的,有些东西封装好使用起来很方便,如果另外一个语言没有对应的封装,要再去整也是挺麻烦的,因此就想用socket的方式建立两个语言的tcp连接,一个发送请求,处理完返回就行了。因为我的要求不高,字符串就可以,因此这种方法觉得还是可以的。如果有哪里不对还望指正。二、代码1、Python端(服务端)参考:https.
2020-06-27 15:26:38
974
原创 猜数字大小II
一、题目描述题目链接:https://leetcode-cn.com/problems/guess-number-higher-or-lower-ii/二、题目分析本题暴力的解法是使用回溯,假设每次挑到的数都不是结果,然后递归计算左右两边剩余数组需要至少需要多少钱才能赢。递归停止的条件为数组只剩1个数。然而在递归的过程中会有重复计算的情况,若我们选择2,则计算右边数组时会计算[4,5,6],若选择3,计算右边的数组也会计算[4,5,6],因此可以使用动态规划的方法进行优化。我们.
2020-06-27 09:25:56
291
原创 最高的广告牌
一、题目描述题目链接:https://leetcode-cn.com/problems/tallest-billboard/二、题目分析本题被力扣归为动态规划,无奈本人水平实在有限,最终只能用回溯+剪枝解决。首先我们有一个最直观的想法,广告牌有left和right两根柱子,对于题目给的钢筋,我们可以选择放在左边,可以可选择放在右边,也可以选择都不放。由此我们便有了回溯的一个基本思想。然而若我们不对直接进行回溯而不剪枝,是过不了的。因此我们要考虑剪枝的条件。我们将左边的钢筋高度(.
2020-06-26 09:50:04
335
原创 连续的子数组和
一、题目描述题目链接:https://leetcode-cn.com/problems/continuous-subarray-sum/二、题目分析题目最直观的做法就是使用前缀和,要注意的是对于k = 0的处理。接着可以想一下如何对前缀和进行优化,在使用前缀和的时候,我们需要遍历当前前缀和“前面的”前缀和,再进行计算,而根据同余定理,我们定位到的“前面的”前缀和模k后的结果如果和当前前缀和模k的结果相等,那么我们就找到了符合要求的数组。这里我们很自然地想到用map来进行一个快速查找.
2020-06-25 16:13:29
440
1
原创 做菜的顺序
一、题目描述题目链接:https://leetcode-cn.com/problems/reducing-dishes/二、题目分析力扣将这道题归为动态规划的范畴,事实上解法是数学证明。只能说分析的过程有动态规划内味。首先我们最直观的想法是,尽量找到满意度大的菜,然后再看看能不能加上别的菜。那么能加菜的条件是什么呢?我们分析一下。假设有数组{c1,c2,c3,c4},以降序排列,则c1符合我们第一个要求,当只选第一个菜的时候,sum为c1,此时,若我们加上第二道菜,则有sum = .
2020-06-25 15:05:48
402
原创 我能赢吗
一、题目描述题目链接:https://leetcode-cn.com/problems/can-i-win/二、题目分析参考题解:https://leetcode-cn.com/problems/can-i-win/solution/hui-su-zhuang-ya-dp-by-8bun/本题最直观的做法是使用回溯,列举每一个人所有情况,找到能赢的选择,否则不能赢。因此需要记录当前数字的使用状态,即哪些数字用了,哪些没用,可以用数组status进行保存。我们使用一个函数进行计算,当.
2020-06-25 09:45:55
374
原创 删除与获得点数
一、题目描述题目链接:https://leetcode-cn.com/problems/delete-and-earn/二、题目分析本题使用动态规划得以解决,思路参考:https://leetcode-cn.com/problems/delete-and-earn/solution/ru-guo-ni-li-jie-liao-da-jia-jie-she-zhe-ti-ni-ken/解决本题的关键在于不要被数组这一因素束缚。由于题目对最大元素有限制,因此事实上我们可以申请一个下标足以涵.
2020-06-23 20:03:41
142
1
原创 移除盒子
一、题目描述题目链接:https://leetcode-cn.com/problems/remove-boxes/二、题目分析本题使用到三维dp,参考题解:https://leetcode-cn.com/problems/remove-boxes/solution/guan-fang-fang-fa-2ji-yi-hua-sou-suo-dong-hua-tu-j/配合注释食用更佳三、代码 public int removeBoxes(int[] boxes)..
2020-06-22 15:16:40
264
原创 最大的以 1 为边界的正方形
一、题目描述题目链接:https://leetcode-cn.com/problems/largest-1-bordered-square/二、题目分析本题可以使用动态规划的方法解决。我们可以定义两个二维数组dp_up,dp_left,代表当前位置向左延申的最大长度,向上延申的最大长度,建立好这两个数组之后,我们对于每一个grid为1的位置i,j进行如下操作:1、去dp_up和dp_left的较小值作为可能的最大正方形边len。2、判断dp_up[i-len+1][j],d.
2020-06-22 10:52:39
254
原创 不同的二叉搜索树
一、题目描述题目链接:https://leetcode-cn.com/problems/unique-binary-search-trees/二、题目分析本题可使用动态规划方法解决。首先要意识到,节点的序号对二叉树的构建是等价的,即假如我们分别用1,2和3,4构建搜索二叉树,能构建的数量都是2。因此,我们只要确定了根节点,比根节点小的为左子树,比根节点大的为右子树,而直到了左右节点子树的节点数量,就可以通过dp得到左右子树分别由多少种情况,再将左右子树情况数相乘就可以得到以当前节点.
2020-06-22 09:32:47
215
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅