
每日一题(力扣)
文章平均质量分 60
别碰我代码
C试图变得有趣
--------------
2020/12/18 更新
Java试图变得有趣
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
动态规划 - 爬楼梯问题
引言力扣题目【爬楼梯】描述 -> 传送门所用语言:Java执行用时 0 ms,内存消耗 35.2 MB时间复杂度 O(n) ,空间复杂度 O(1)正文和斐波那契数列一样的解法这道题目,一看就很熟悉,和斐波那契数列异曲同工,可以使用递归,当然也可以使用动态规划来解关于动态规划,我也还在学习中,所以我解这道题目时,习惯是:先使用递归解决 -> 然后优化成使用动态规划来解决递归解法递归解法的详细思路我就不先在这里说,先上代码:public int climbStair.原创 2021-08-30 21:01:20 · 1344 阅读 · 0 评论 -
合并有序数组
引言力扣题目【合并两个有序数组】描述 -> 传送门所用语言:Java第一种答案:执行用时 1 ms,内存消耗 38.4 MB第二种答案:执行用时 0 ms,内存消耗 38.6 MB正文今天的题目是简单题,也确实是简单,这里就不详细讲了,可以直接看代码答案①主要的思路:在 num1 数组上进行数据的移动,如果 num2 有符合的数据要插入进来,就将数据往后移,空出一个位置来接收数据。所以较为节省空间public void merge(int[] nums1, int m, .原创 2021-04-05 23:26:15 · 137 阅读 · 0 评论 -
森林中的兔子
引言力扣题目【森林中的兔子】描述 -> 传送门所用语言:Java执行用时 1 ms,内存消耗 37.6 MB正文很有趣的一道题,解起来也非常快。首先要明确几点:① 要求的是最少的兔子数量② 回答者说出的数量中是不包括自己的,是指其他和自己颜色一样的兔子的数量③ 在 answers 数组中,值 n 可能会出现大于 n + 1 次(重点)下面我给出包含了所有情况的几个例子:① 如果 answers 数组为 [0,0,0],那么最少有多少只兔子呢?② 如果 answers 数.原创 2021-04-04 01:43:17 · 173 阅读 · 0 评论 -
直方图的水量--木桶原理
引言力扣题目【直方图的水量】描述 -> 传送门所用语言:Java执行用时 1 ms,内存消耗 38.1 MB正文昨天和前天的题解由于时间比较匆忙,没有来得及写的很详细 ????(不过也没有多少人看就是了)今天是假期的第一天,时间比较充裕,我尽量将本篇题解写的详细一点,也对得起这道困难题。我该怎么和你说清楚我的思路呢?????????这些是废话,要是时间紧迫,可直接跳过我不喜欢我的思路被别人牵着走。力扣的题目有时会有一些折叠起来的提示,我不喜欢去看这些提示。或者说在我觉得原创 2021-04-02 23:42:05 · 308 阅读 · 0 评论 -
笨阶乘
引言力扣题目【笨阶乘】描述 -> 传送门所用语言:Java执行用时 1 ms,内存消耗 35.1 MB正文说说我的思路吧,一开始我是想要使用栈来解题的,因为我觉得这个题和逆波兰运算有点相似之处(或许也只是我的错想)。然后我突然想起了有限状态机,这道题就四种运算不断切换(乘、除、加、减、乘…),可以将这四种运算对应成四种状态,这样可以运用有限状态机的思路进行解题。详细的步骤看下面的代码就了然了。答案:public int clumsy(int N) { if (N &l.原创 2021-04-01 23:58:03 · 113 阅读 · 0 评论 -
子集 II
引言力扣题目【子集 II】描述 -> 传送门所用语言:Java执行用时 35 ms,内存消耗 39.4 MB正文不推荐我这种做法,这只是纯暴力的一种解法。这道题最好的做法还是用回溯法(可将执行时间降到 1 ms),不过我还不会。先贴出我的答案,如果我学会了用回溯法解,再贴出回溯法的答案。答案public List<List<Integer>> subsetsWithDup(int[] nums) { LinkedList<List<In.原创 2021-03-31 23:41:36 · 113 阅读 · 0 评论 -
搜索二维矩阵
引言力扣题目【搜索二维矩阵】描述 -> 传送门所用语言:Java执行用时 0 ms,内存消耗 37.5 MB正文今天的题目,虽然官方显示是中等难度,但是我个人觉得这个应该算是简单题,因为题目给的条件太宽松了:①矩阵是有序排列的;②矩阵的长、宽很小,让人没有想要去优化的欲望 ????先说说我的思路吧:根据题目描述,矩阵的行数据是升序排列的,矩阵的列数据也是升序排列的所以,可以先锁定 target 可能出现在哪一行,然后再去看这一行中是否有 target我下面给出的答案就是按照原创 2021-03-30 16:40:16 · 110 阅读 · 0 评论 -
颠倒二进制位
引言力扣题目【颠倒二进制位】描述 -> 传送门所用语言:Java执行用时 1 ms,内存消耗 37.8 MB正文题目描述很简单,把一个数的二进制位做一个镜像对称,即颠倒过来。例如:0001101 -> 1011000感觉也没啥好解释的,直接先看代码吧,这样更直观一点答案public int reverseBits(int n) { // 如果所有位全都是1或全都是0,可以直接返回 if (~n == 0 || n == 0) { return n; }.原创 2021-03-29 18:39:29 · 473 阅读 · 0 评论 -
二叉搜索树迭代器
引言力扣题目【二叉搜索树迭代器】描述 -> 传送门所用语言:Java执行用时 22 ms,内存消耗 42.1 MB正文先插个题外话,你要明白什么是二叉搜索树。虽然对解这道题没啥帮助,但是对你自己在力扣上写测试用例是有帮助的先说说题目的几点要求题目要求使用中序遍历,即,先遍历左结点,然后到中间结点,然后再是右结点题目要求next() 和 hasNext() 的操作均摊时间复杂度为 O(1),你有可能想到了要把二叉搜索树转化一下,把结点按照顺序存到栈、队列、链表、数组等。等到.原创 2021-03-28 18:17:26 · 148 阅读 · 0 评论 -
旋转链表
引言力扣题目【旋转链表】描述 -> 传送门所用语言:Java用了两次遍历,运行用时0ms,内存消耗37.8MB正文题目要求旋转链表,其实,通过观察很容易发现,要将链表每个结点向右移动 k 个位置(这里先假设 k < 结点数量),就是将链表中的后 k 个结点断开并连接到原链表的头部,这样就实现了旋转效果。例如:有一个链表 2 -> 4 -> 6 -> 8 -> 10 -> 12,要将其每个结点向右移动 2 个位置,可以这样操作:①断开后 2 个结.原创 2021-03-27 20:18:00 · 227 阅读 · 0 评论 -
两种方案删除排序链表中的重复元素
删除排序链表中的重复元素力扣题目链接 -> 传送门所用语言:Java第一种方法是用了两次遍历,运行用时1ms,内存消耗37MB左右第二种方法是用了一次遍历,运行用时0ms,内存消耗37MB左右正文解析①可以看到,在题目的提示中结点值的范围是[-100, 100],这个范围并不是很大,我们可以使用数组来记录每个值出现的次数。例如:我们定义一个偏移量int offset = 100,使用偏移量将结点值的范围控制在[0, 200]之内。然后我们就可以定义一个记录数组int count[原创 2021-03-26 02:44:18 · 334 阅读 · 0 评论 -
删除排序链表中的重复元素 II(力扣)
删除排序链表中的重复元素 II力扣题目链接 -> 传送门所用语言:Java第一种方法是我自己想的,用了两次遍历,运行用时1ms,内存消耗38MB左右第二种方法是我参照大佬的题解写的(和大佬的答案基本相似),运行用时0ms!不得不佩服大佬的细节处理正文解析①可以看到,在题目的提示中结点值的范围是[-100, 100],这个范围并不是很大,我们可以使用数组来记录每个值出现的次数。例如:我们定义一个偏移量int offset = 100,使用偏移量将结点值的范围控制在[0, 200]之原创 2021-03-25 21:57:16 · 196 阅读 · 4 评论