Skip to content

Commit

Permalink
feat: $42|$456
Browse files Browse the repository at this point in the history
  • Loading branch information
robot committed Aug 19, 2023
1 parent 7f3e6cb commit 9fcea25
Show file tree
Hide file tree
Showing 4 changed files with 10 additions and 15 deletions.
16 changes: 4 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,19 +41,9 @@
## 图片加载不出来如何解决?

<https://github.com/fe-lucifer/fanqiang>
## 力扣专属折扣

## 九章算法班

![](https://p.ipic.vip/iyzbvl.jpg)

九章算法,由北大、清华校友于美国硅谷创办,已帮助数十万 IT 程序员找到高薪 offer! 提供 1 对 1 求职指导、算法指导、前后端项目、简历代笔等服务。

- 推荐[免费ChatGPT网站](https://www.lintcode.com/chat-gpt?utm_source=tf-github-lucifer),戳此免费使用:[www.lintcode.com/chat-gpt](https://www.lintcode.com/chat-gpt?utm_source=tf-github-lucifer)

- 推荐北大 FB 双料大神的[《九章算法班》](https://www.jiuzhang.com/course/71/?utm_source=tf-github-lucifer2022),有人靠他连拿 3 个大厂 offer

![](https://p.ipic.vip/fu39bf.jpg)

力扣免费题目已经有了很多经典的了,也覆盖了所有的题型,只是很多公司的真题都是锁定的。个人觉得如果你准备找工作的时候,可以买一个会员。另外会员很多leetbook 也可以看,结合学习计划,效率还是蛮高的。如果你要买力扣会员的话,这里有我的专属力扣折扣:https://leetcode.cn/premium/?promoChannel=lucifer (年度会员多送两个月会员,季度会员多送两周会员)
## :calendar:《91 天学算法》限时活动

很多教育机构宣传的 7 天,一个月搞定算法面试的,我大概都了解了下,不怎么靠谱。学习算法这东西,还是要靠积累,没有量变是不可能有质变的。还有的人选择看书,这是一个不错的选择。但是很多人选了过时的或者质量差的书,又或者不会去写书中给的练习题,导致效果很差。
Expand Down Expand Up @@ -389,6 +379,7 @@ leetcode 题解,记录自己的 leetcode 解题之路。
- [0900. RLE 迭代器](./problems/900.rle-iterator.md)
- [0911. 在线选举](./problems/911.online-election.md)
- [0912. 排序数组](./problems/912.sort-an-array.md)
- [0918. 环形子数组的最大和](./problems/918.maximum-sum-circular-subarray.md) 👍
- [0932. 漂亮数组](./problems/932.beautiful-array.md)
- [0935. 骑士拨号器](./problems/935.knight-dialer.md)
- [0947. 移除最多的同行或同列石头](./problems/947.most-stones-removed-with-same-row-or-column.md)
Expand Down Expand Up @@ -438,6 +429,7 @@ leetcode 题解,记录自己的 leetcode 解题之路。
- [2008. 出租车的最大盈利](./problems/2008.maximum-earnings-from-taxi.md)
- [2592. 最大化数组的伟大值](./problems/2592.maximize-greatness-of-an-array.md)
- [2593. 标记所有元素后数组的分数](./problems/2593.find-score-of-an-array-after-marking-all-elements.md)
- [2817. 限制条件下元素之间的最小绝对差](./problems/2817.minimum-absolute-difference-between-elements-with-constraint.md)
- [5935. 适合打劫银行的日子](./problems/5935.find-good-days-to-rob-the-bank.md)
- [5936. 引爆最多的炸弹](./problems/5936.detonate-the-maximum-bombs.md)
- [5965. 相同元素的间隔之和](./problems/5965.intervals-between-identical-elements.md)
Expand Down
1 change: 1 addition & 0 deletions SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -274,6 +274,7 @@
- [2008. 出租车的最大盈利](./problems/2008.maximum-earnings-from-taxi.md)
- [2592. 最大化数组的伟大值](./problems/2592.maximize-greatness-of-an-array.md)
- [2593. 标记所有元素后数组的分数](./problems/2593.find-score-of-an-array-after-marking-all-elements.md)
- [2817. 限制条件下元素之间的最小绝对差](./problems/2817.minimum-absolute-difference-between-elements-with-constraint.md)
- [5935. 适合打劫银行的日子](./problems/5935.find-good-days-to-rob-the-bank.md)
- [5936. 引爆最多的炸弹](./problems/5936.detonate-the-maximum-bombs.md)
- [5965. 相同元素的间隔之和](./problems/5965.intervals-between-identical-elements.md)
Expand Down
6 changes: 4 additions & 2 deletions problems/42.trapping-rain-water.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ https://leetcode-cn.com/problems/trapping-rain-water/

这是一道雨水收集的问题, 难度为`hard`. 如图所示,让我们求下过雨之后最多可以积攒多少的水。

如果采用暴力求解的话,思路应该是 height 数组依次求和,然后相加
如果采用暴力求解的话,思路应该是枚举每一个位置 i 下雨后的积水量,累加记为答案

- 伪代码

Expand All @@ -51,7 +51,7 @@ for (let i = 0; i < height.length; i++) {
}
```

问题转化为求 h,那么 h[i]又等于`左右两侧柱子的最大值中的较小值`,即
问题转化为求 h 数组,这里 h[i] 其实等于`左右两侧柱子的最大值中的较小值`,即
`h[i] = Math.min(左边柱子最大值, 右边柱子最大值)`

如上图那么 h 为 [0, 1, 1, 2, 2, 2 ,2, 3, 2, 2, 2, 1]
Expand Down Expand Up @@ -156,6 +156,8 @@ int trap(vector<int>& heights)
## 双指针
这种解法为进阶解法, 大家根据自己的情况进行掌握。
### 思路
上面代码比较好理解,但是需要额外的 N 的空间。从上面解法可以看出,我们实际上只关心左右两侧较小的那一个,并不需要两者都计算出来。具体来说:
Expand Down
2 changes: 1 addition & 1 deletion problems/456.132-pattern.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ n == nums.length

一个简单的思路是使用一层**从左到右**的循环固定 3,遍历的同时维护最小值,这个最小值就是 1(如果固定的 3 不等于 1 的话)。 接下来使用另外一个嵌套寻找枚举符合条件的 2 即可。 这里的符合条件指的是大于 1 且小于 3。这种做法的时间复杂度为 $O(n^2)$,并不是一个好的做法,我们需要对其进行优化。

实际上,我们也可以枚举 2 的位置,这样目标变为找到一个大于 2 的数和一个小于 2 的数。由于 2 在序列的右侧,因此我们需要**从右往左**进行遍历。又由于题目只需要找到一个 312 模式,因此我们应该贪心地选择尽可能大的 2(只要不大于 3 即可),这样才**更容易找到 1**(换句话说不会错过 1)。
实际上,我们也可以枚举 2 的位置,这样目标变为找到一个大于 2 的数和一个小于 2 的数。由于 2 在序列的右侧,因此我们需要**从右往左**进行遍历。又由于题目只需要找到一个 132 模式,因此我们应该贪心地选择尽可能大的 2(只要不大于 3 即可),这样才**更容易找到 1**(换句话说不会错过 1)。

首先考虑找到 32 模式。我们可以使用从右往左遍历的方式,当遇到一个比后一位大的数时,我们就找到了一个可行的 32 模式。

Expand Down

0 comments on commit 9fcea25

Please sign in to comment.