自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 每日抑题 1109. 航班预订统计

1109. 航班预订统计难度:中等语言:java题目内容这里有 n 个航班,它们分别从 1 到 n 进行编号。有一份航班预订表 bookings ,表中第 i 条预订记录 bookings[i] = [firsti, lasti, seatsi] 意味着在从 firsti 到 lasti (包含 firsti 和 lasti )的 每个航班 上预订了 seatsi 个座位。请你返回一个长度为 n 的数组 answer,其中 answer[i] 是航班 i 上预订的座位总数。解法分析很久没有

2021-08-31 16:31:16 166

原创 Java GUI 小游戏 贪吃蛇

贪吃蛇小游戏周末闲着,自学的开源项目的环境总有版本的问题,搞得心烦意乱,就打算做个小软件放松一下,找到了个贪吃蛇写了一下。库用到了几个GUI的库JFrameJFrame可以构建一个静态的窗口JPanelJPanle类似一个画布功能,可以把画笔之类的加在上面KeyListener / ActionListener准确的说这不是一个库,起到一个键盘监听的作用,按下去的键能够获取到方案简述其实是比较简单的一个做法,用了很多取巧的地方,也是跟着视频做出来的。具体就是头需要变化方向,但是身

2021-07-25 15:32:59 200

原创 每日一题 494. 目标和

494. 目标和难度:中等语言:简单题目内容给你一个整数数组 nums 和一个整数 target 。向数组中的每个整数前添加 ‘+’ 或 ‘-’ ,然后串联起所有整数,可以构造一个 表达式 :例如,nums = [2, 1] ,可以在 2 之前添加 ‘+’ ,在 1 之前添加 ‘-’ ,然后串联起来得到表达式 “+2-1” 。返回可以通过上述方法构造的、运算结果等于 target 的不同 表达式 的数目。解题思路这一题其实是很明显的动态规划的题目,主要就是找到状态转移方程,如何让前后两个

2021-06-07 23:01:45 205 3

原创 每日一题 160. 相交链表

160. 相交链表难度:简单语言:java题目内容给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。解法分析本来现在我已经不记录简单题了,但是这题的解法很有意思,所以我还是记录一下,方便自己以后查看。解法真的还蛮多的暴力解法:双重遍历似乎也是能过的,但是这个解法没啥意思就不说了哈希表:因为哈希表在这里可以存地址,所以只要地址相同就有值重复的点啦,可以先遍历一条链表,再进行查询这个是我想记录一下的解法,不

2021-06-04 11:03:11 119

原创 每日一题 525. 连续数组

525. 连续数组难度:中等语言:java题目内容给定一个二进制数组 nums , 找到含有相同数量的 0 和 1 的最长连续子数组,并返回该子数组的长度。解法思路开始写了个解法,以为是必须01不间隔的,发现01可以间隔着来,只要在一段范围内数量相等就可以了。我开始还想着,如果和是长度的两倍就可以算,原来有更好的办法,直接把0算作-1,如果一部分的和为0,则这部分是连续子数组,就又回到了昨天的问题了,前缀和,哈希表。class Solution { public int findM

2021-06-03 22:37:19 84

原创 每日抑题 523. 连续的子数组和

523. 连续的子数组和难度:中等语言:java题目内容给你一个整数数组 nums 和一个整数 k ,编写一个函数来判断该数组是否含有同时满足下述条件的连续子数组:子数组大小 至少为 2 ,且子数组元素总和为 k 的倍数。如果存在,返回 true ;否则,返回 false 。如果存在一个整数 n ,令整数 x 符合 x = n * k ,则称 x 是 k 的一个倍数。解法分析这是一个比较典型的前缀和的问题,连续数组的和能否被整除,前缀和的方法就是构造PreSum数组,我这边先尝试用了暴

2021-06-02 16:12:53 99

原创 LeetCode 每日一题 477. 汉明距离总和

477. 汉明距离总和难度:中等语言:java题目内容两个整数的 汉明距离 指的是这两个数字的二进制数对应位不同的数量。计算一个数组中,任意两个数之间汉明距离的总和。解题思路昨天的每日一题是两个数的所谓明汉距离,就是异位的个数了,昨天的方法我想到的是直接异或后用内置函数。但是今天用不了了,因为异或是以整个数为一个整体去计算,在这一题需要对比的是多个数每一位的差别。因为大小限制,所有数都是小于31位的,那如果第30位,有15个数是0,15个数是1,那对这一位来说不同的就有15*15,所以只

2021-05-28 17:02:17 123

原创 LeetCode 每日抑题 1190. 反转每对括号间的子串

1190. 反转每对括号间的子串难度:中等语言:java题目内容给出一个字符串 s(仅含有小写英文字母和括号)。请你按照从括号内到外的顺序,逐层反转每对匹配括号中的字符串,并返回最终的结果。注意,您的结果中 不应 包含任何括号。解题思路这题开始我看了半天开始没看明白题目什么意思,特别是示例2,我开始没明白,为啥love不用反转,后来看了半天才搞明白,最里面先反转,然后外面再反转,这也就是每日抑题的原因了,用示例2举个例子(u(love)i)(uevoli)iloveu大概是这么

2021-05-26 22:47:41 294 1

原创 每日一题 692. 前K个高频单词

692. 前K个高频单词难度:中等语言:java题目内容给一非空的单词列表,返回前 k 个出现次数最多的单词。返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率,按字母顺序排序。解法分析这个很容易能够想到哈希表的方法来记录出现次数,主要还有个按照字母顺序排序的要求。有两种解法可以解决,一个是排序解法,还有一种是小根堆,小根堆在最近的题目中出现蛮多次的,是一种比较简单的排序方法。先看排序的解法,使用ArrayList的lambda排序方法来进行排序,这是一个比较简单的方法

2021-05-20 22:40:52 151

原创 LeetCode每日一题 1442. 形成两个异或相等数组的三元组数目

1442. 形成两个异或相等数组的三元组数目难度:中等语言:java题目内容给你一个整数数组 arr 。现需要从数组中取三个下标 i、j 和 k ,其中 (0 <= i < j <= k < arr.length) 。a 和 b 定义如下:a = arr[i] ^ arr[i + 1] ^ … ^ arr[j - 1]b = arr[j] ^ arr[j + 1] ^ … ^ arr[k]注意:^ 表示 按位异或 操作。请返回能够令 a == b 成立的三元组 (

2021-05-18 22:25:20 82

原创 LeetCode 每日一题 421. 数组中两个数的最大异或值

421. 数组中两个数的最大异或值难度:中等语言:java问题内容给你一个整数数组 nums ,返回 nums[i] XOR nums[j] 的最大运算结果,其中 0 ≤ i ≤ j < n 。进阶:你可以在 O(n) 的时间解决这个问题吗?解题思路最近的每日一题怎么这么喜欢异或的题目啊。这一题的解法略有不同,需要引入一个新的东西。Tire 树树形结构对应的就是搜索,在搜索的过程中,简化搜索的效率。借用这张网上放了很多次的图,Tire树其实就是原本的树按照了字母进行了划分,这

2021-05-16 16:41:58 80

原创 LeetCode每日抑题 1269. 停在原地的方案数

1269. 停在原地的方案数难度:困难语言:java题目内容有一个长度为 arrLen 的数组,开始有一个指针在索引 0 处。每一步操作中,你可以将指针向左或向右移动 1 步,或者停在原地(指针不能被移动到数组范围外)。给你两个整数 steps 和 arrLen ,请你计算并返回:在恰好执行 steps 次操作以后,指针仍然指向索引 0 处的方案数。由于答案可能会很大,请返回方案数 模 10^9 + 7 后的结果。解题思路其实这是一个比较明显的dp题目,下一步的走向,由剩下的步数,以及所

2021-05-14 00:06:10 97

原创 LeetCode每日一题 872. 叶子相似的树

872. 叶子相似的树语言:java难度:简单题目内容请考虑一棵二叉树上所有的叶子,这些叶子的值按从左到右的顺序排列形成一个 叶值序列 。如果有两棵二叉树的叶值序列是相同,那么我们就认为它们是 叶相似 的。如果给定的两个根结点分别为 root1 和 root2 的树是叶相似的,则返回 true;否则返回 false 。解法分析不知道为何,最近树的题目都是简单题,树的题目无外乎两种解决方式,dfs和bfs,也就是通常说的迭代和递归,迭代的方法一般比较简单。这次无论用哪种遍历方法都可以(前序

2021-05-10 21:46:39 89

原创 LeetCode每日抑题 1482. 制作 m 束花所需的最少天数

1482. 制作 m 束花所需的最少天数难度:中等语言:java题目内容给你一个整数数组 bloomDay,以及两个整数 m 和 k 。现需要制作 m 束花。制作花束时,需要使用花园中 相邻的 k 朵花 。花园中有 n 朵花,第 i 朵花会在 bloomDay[i] 时盛开,恰好 可以用于 一束 花中。请你返回从花园中摘 m 束花需要等待的最少的天数。如果不能摘到 m 束花则返回 -1 。解题思路看了一圈,要求太多了,又要相连的花,还有成束,又要最短时间,我自己想的办法是这样的,用滑动窗

2021-05-09 16:10:59 89

原创 LeetCode每日一题 删除并获得点数 / 打家劫舍系列 动态规划

740. 删除并获得点数语言:java难度:中等题目内容给你一个整数数组 nums ,你可以对它进行一些操作。每次操作中,选择任意一个 nums[i] ,删除它并获得 nums[i] 的点数。之后,你必须删除 所有 等于 nums[i] - 1 和 nums[i] + 1 的元素。开始你拥有 0 个点数。返回你能通过这些操作获得的最大点数。解题思路这一题呢,开始想的是先求和,把每个数字的和求出来然后再进行计算,我还在想构造一个树出来,其实想了半天也没往动态规划上面想,因为选择第一个数以后,

2021-05-07 23:33:19 156

原创 LeetCode 每日一题 1720. 解码异或后的数组

1720. 解码异或后的数组难度:简单语言:java题目内容未知 整数数组 arr 由 n 个非负整数组成。经编码后变为长度为 n - 1 的另一个整数数组 encoded ,其中 encoded[i] = arr[i] XOR arr[i + 1] 。例如,arr = [1,0,2,1] 经编码后得到 encoded = [1,2,3] 。给你编码后的数组 encoded 和原数组 arr 的第一个元素 first(arr[0])。请解码返回原数组 arr 。可以证明答案存在并且是唯一的。

2021-05-06 20:22:55 110

原创 LeetCode每日抑题 554. 砖墙

554. 砖墙难度:中等语言:java题目内容你的面前有一堵矩形的、由 n 行砖块组成的砖墙。这些砖块高度相同(也就是一个单位高)但是宽度不同。每一行砖块的宽度之和应该相等。你现在要画一条 自顶向下 的、穿过 最少 砖块的垂线。如果你画的线只是从砖块的边缘经过,就不算穿过这块砖。你不能沿着墙的两个垂直边缘之一画线,这样显然是没有穿过一块砖的。给你一个二维数组 wall ,该数组包含这堵墙的相关信息。其中,wall[i] 是一个代表从左至右每块砖的宽度的数组。你需要找出怎样画才能使这条线 穿过的砖

2021-05-03 23:19:59 127

原创 LeetCode每日一题 7. 整数反转

7. 整数反转难度:简单语言:java题目内容给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)。解题思路数学方法解决问题,每次对10取余然后再利用整数的特性再除10,就可以依次取出每一位,可以拓展一下,经常有对字符串或者整数中的每位数字进行操作的题目,通常方法也是先考虑这种数学方法,还有一种,可以使用栈来进行调换顺序,先

2021-05-03 18:03:29 122

原创 LeetCode 403. 青蛙过河

403. 青蛙过河难度:困难语言:java题目内容一只青蛙想要过河。 假定河流被等分为若干个单元格,并且在每一个单元格内都有可能放有一块石子(也有可能没有)。 青蛙可以跳上石子,但是不可以跳入水中。给你石子的位置列表 stones(用单元格序号 升序 表示), 请判定青蛙能否成功过河(即能否在最后一步跳至最后一块石子上)。开始时, 青蛙默认已站在第一块石子上,并可以假定它第一步只能跳跃一个单位(即只能从单元格 1 跳至单元格 2 )。如果青蛙上一步跳跃了 k 个单位,那么它接下来的跳跃距离只能

2021-04-29 22:38:49 248

原创 LeetCode每日一题 633. 平方数之和

633. 平方数之和难度:中等语言:java题目内容给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a^2 + b^2 = c 。解题思路基于昨天刚做过1011题,能否在D天内运送货物,重要的点就是,找到边界,然后进行二分查找。在这题里面,能否存在,好像也是类似查找的一个题目,也是一个定好边界,去找值的一个题目,因为a,b可以为0,所以左边界要从0开始算,右边界,就是c的平方根,想法比较简单,麻烦的是数形转换,我记得python似乎可以智能转换,但是java对数据类型要求比

2021-04-28 22:14:07 163

原创 LeetCode每日一题 1011. 在 D 天内送达包裹的能力

1011. 在 D 天内送达包裹的能力难度:中等(想明白了确实是中等题)语言:java题目内容传送带上的包裹必须在 D 天内从一个港口运送到另一个港口。传送带上的第 i 个包裹的重量为 weights[i]。每一天,我们都会按给出重量的顺序往传送带上装载包裹。我们装载的重量不会超过船的最大运载重量。返回能在 D 天内将传送带上的所有包裹送达的船的最低运载能力。说实话,不看这个示例是真不明白要求啥思路分析这种求最小值的问题,我第一个想到的是贪心算法,当时我想的是,如果我正好跟包裹中重量的最

2021-04-27 20:38:10 126

原创 LeetCode每日一题 938. 二叉搜索树的范围和

938. 二叉搜索树的范围和难度:简单语言:java题目内容给定二叉搜索树的根结点 root,返回值位于范围 [low, high] 之间的所有结点的值的和。解题思路树的题目无外乎两种解决方法递归与迭代。递归的方法就是深度优先搜索(dfs)答案也有方法,但是我更倾向于这种,使用中序遍历来过一遍整个树的内容,见上一篇文章中有各种遍历算法的格式,几乎只需要背掉就可以解决问题了。class Solution { int ans; public int rangeSumBST(T

2021-04-27 20:14:58 105

原创 LeetCode每日一题 897. 递增顺序搜索树

897. 递增顺序搜索树难度:简单语言:Java题目描述给你一棵二叉搜索树,请你 按中序遍历 将其重新排列为一棵递增顺序搜索树,使树中最左边的节点成为树的根节点,并且每个节点没有左子节点,只有一个右子节点。思路解答简单题不需要说太多思路,树的题目无外乎两种解决方法,递归与迭代。先回顾一下树的递归三种遍历方式:先序遍历遍历方式为根左右void dfs(TreeNode root) { if (root == null) return ; list.add(r

2021-04-25 22:18:50 128

原创 LeetCode 每日一题 363. 矩形区域不超过 K 的最大数值和

363. 矩形区域不超过 K 的最大数值和难度:困难语言:java题目描述给你一个 m x n 的矩阵 matrix 和一个整数 k ,找出并返回矩阵内部矩形区域的不超过 k 的最大数值和。题目数据保证总会存在一个数值和不超过 k 的矩形区域。解题思路终于,来了一道困难题了首先说我自己的思路,第一个想到的是动态规划,dp,如果想要最大,那么只要前面的矩形里面的和尽可能地大,我可以直接通过上一个矩形来判断向下拓展和向右拓展来确定是否需要添加,但是dp有一个问题就是,我没法确定边界,一般dp的

2021-04-22 22:04:58 257

原创 LeetCode每日一题 28.实现 strStr()

LeetCode每日一题 28.实现 strStr()难度:简单(其实不简单,要理解KMP算法)语言:java题目内容实现 strStr() 函数。给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回 -1 。解题思路暴力解法比较简单,就是用i遍历haystack直到发现第一位与needle相同,然后开始用j遍历needle,分别为haystack[i+j] 和 nddle[

2021-04-20 22:46:38 82

原创 Leetcode每日一题27. 移除元素

27. 移除元素难度:简单语言:Java题目内容给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。解题思路这题与之前的移除重复元素的方法非常类似,也是使用双指针,当快指针发现相同元素的时候,慢指针停止,快指针继续向下遍历直到找到不同的元素,赋值给慢指针位置。class Solution

2021-04-19 22:37:43 262

原创 LeetCode 每日一题 26 删除有序数组中的重复项

26. 删除有序数组中的重复项难度:简单语言:java题目描述给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。解题思路这题似乎做过,又似乎没做过,不知道每日一题的算法是怎么计算的。这个题目里面我个人认为要关注的是,返回的是长度而不是新的数组,其实某种程度上就说明了是不应该关注新的数组的,我想的是双指针方法,一个快的指针向后,一个慢的指

2021-04-18 22:49:07 131

原创 LeetCode每日一题- 220 存在重复元素 III

220 存在重复元素 III难度:中等语言:java题目内容给你一个整数数组 nums 和两个整数 k 和 t 。请你判断是否存在 两个不同下标 i 和 j,使得 abs(nums[i] - nums[j]) <= t ,同时又满足 abs(i - j) <= k 。如果存在则返回 true,不存在返回 false。解题思路首先肯定最好想到的办法就是暴力解法,两次遍历,首先选出满足条件的下标,再比较对应的值,这里就不多加赘述了,简单直接但不算好,最大的复杂度会到O(n2)。那其

2021-04-17 16:18:45 101

原创 LeetCode每日一题 - 783 二叉搜索树节点最小距离

LeetCode每日一题 - 783 二叉搜索树节点最小距离难度:简单语言:Java二叉搜索树二叉搜索树(BST,Binary Search Tree),也称二叉排序树或二叉查找树二叉搜索树:一颗二叉树,可以为空;如果不为空,满足以下性质:非空左子树的所有键值小于其根节点的键值非空右子树的所有键值大于其根节点的键值左、右子树都是二叉搜索树左小右大,子树均为二叉搜索树题目内容给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。解题思路方法其实很

2021-04-13 23:24:12 67

原创 LeetCode每日一题 - 179 最大数

LeetCode每日一题 - 179 最大数难度:中等语言:Java题目描述给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。注意:输出结果可能非常大,所以你需要返回一个字符串而不是整数。解题思路我开始看错题目了,以为每个数字是可以拆开的,所以想了半天,写了个很复杂的方法,虽然不是很好,但是也是自己的思路,所以还是记录一下吧class Solution { public String largestNumber(int[] nums) {

2021-04-13 00:07:39 474

原创 Java Collection操作方法

Collection操作方法库:java.util基础操作方法Collection<String> coll = new ArrayList<>(); public boolean add(E e): 把给定的对象添加到当前集合中 。coll.add("CSDN"); //返回值为布尔值,添加成功均为truepublic void clear() :清空集合中所有的元素。coll.clear(); public boolean remove(E e): 把给定

2021-04-11 17:27:53 125 2

原创 Java 基本类型与字符串之间的相互转化

基本类型与字符串之间的相互转化基本类型 ->字符串基本数据类型的值+""使用包装类中的静态方法Static String toString(int i) ;使用String类中的静态方法Static String Valueof(int i);//方法1 String a = 100+"";//方法2String b = Integer.toString(100);//方法3String c = String.valueOf(100);字符串 -> 基本类型

2021-04-11 15:18:30 69

原创 LeetCode每日一题264—丑数 II

264—丑数 II难度:中等语言:Java题目描述给你一个整数 n ,请你找出并返回第 n 个 丑数 。丑数 就是只包含质因数 2、3 和/或 5 的正整数。解题思路我其实一开始比较呆想到的是 [2,3,4,5]是一个乘法的大小顺序,就比较僵硬了,认真思考了一下动态规划其实比较容易想到dp的方法,因为下一个数的大小取决于前面的数的情况,任何一个丑数乘以2,3,5以后还是会等于丑数,取出乘以2、3、5以后最小的值,最大的难度就是,前面哪个数去乘呢,emm,因为刚开始做就参考了一下答案,发现这

2021-04-11 13:28:32 78

原创 LeetCode每日一题-263 丑数

LeetCode每日一题-263 丑数难度:简单解题语言:Java题目内容给你一个整数 n ,请你判断 n 是否为 丑数 。如果是,返回 true ;否则,返回 false 。丑数 就是只包含质因数 2、3 和/或 5 的正整数。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/ugly-number题目分析整数 n 是否为丑数可转换为是否能重复除 2,3,5至余数不为0的情况下,n是否为1#mermaid-svg-pA5qTEuD4v

2021-04-10 18:44:18 109

空空如也

空空如也

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

TA关注的人

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