Skip to content

Commit ad09315

Browse files
committed
添加新题目
1 parent 6d357ca commit ad09315

File tree

14 files changed

+2257
-8
lines changed

14 files changed

+2257
-8
lines changed

.DS_Store

6 KB
Binary file not shown.

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
## Nice Notes
22

3-
- 记录【牧码咯】公众号中的文集
3+
- 记录【牧码啦】公众号中的文集
44
- 包含算法题解、Java源码解析和开源分享
55
- 欢迎阅读,[阅读地址](https://guanpengchn.github.io/nice-notes/)
66

docs/.DS_Store

6 KB
Binary file not shown.

docs/.vuepress/dist

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
Subproject commit 85a844a1ffe1a41ebd40c0e3514697b521ffd03f
1+
Subproject commit 331c41968887dea431d5dc1c93e6fc398c3ae4d7

docs/algorithm/101.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,5 +89,6 @@ class Solution {
8989
```
9090

9191
<p style="text-align:center;">后台回复「<strong>算法</strong>」,加入天天算法群<p>
92+
<p style="text-align:center;">觉得算法直击灵魂,欢迎点击<strong>在看</strong>和<strong>转发</strong><p>
9293

9394
![](https://i.loli.net/2019/05/20/5ce23b33cc01d73486.gif)

docs/algorithm/162.md

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
# 天天算法 LeetCode-162-寻找峰值
2+
3+
## 题目链接
4+
5+
https://leetcode-cn.com/problems/find-peak-element/
6+
7+
## 题目描述
8+
9+
峰值元素是指其值大于左右相邻值的元素。
10+
11+
给定一个输入数组 `nums`,其中 `nums[i] ≠ nums[i+1]`,找到峰值元素并返回其索引。
12+
13+
数组可能包含多个峰值,在这种情况下,返回任何一个峰值所在位置即可。
14+
15+
你可以假设 `nums[-1] = nums[n] = -∞`
16+
17+
示例 1:
18+
19+
```bash
20+
输入: nums = [1,2,3,1]
21+
输出: 2
22+
解释: 3 是峰值元素,你的函数应该返回其索引 2。
23+
```
24+
25+
示例 2:
26+
27+
```bash
28+
输入: nums = [1,2,1,3,5,6,4]
29+
输出: 1 或 5
30+
解释: 你的函数可以返回索引 1,其峰值元素为 2;
31+
或者返回索引 5, 其峰值元素为 6。
32+
```
33+
34+
**说明:**
35+
36+
你的解法应该是 `O(logN)` 时间复杂度的。
37+
38+
39+
40+
<br/>
41+
<br/>
42+
<br/>
43+
<br/>
44+
<br/>
45+
-------------------机智的思考线-------------------
46+
<br/>
47+
<br/>
48+
<br/>
49+
<br/>
50+
<br/>
51+
-------------------机智的思考线--------------------
52+
<br/>
53+
<br/>
54+
<br/>
55+
<br/>
56+
<br/>
57+
-------------------机智的思考线-------------------
58+
<br/>
59+
<br/>
60+
<br/>
61+
<br/>
62+
<br/>
63+
64+
65+
## 解题方案
66+
67+
### 思路
68+
69+
- 标签:二分查找
70+
- 过程:
71+
- 首先要注意题目条件,在题目描述中出现了`nums[-1] = nums[n] = -∞`,这就代表着**只要数组中存在一个元素比相邻元素大,那么沿着它一定可以找到一个峰值**
72+
- 根据上述结论,我们就可以使用二分查找找到峰值
73+
- 查找时,左指针l,右指针r,以其保持左右顺序为循环条件
74+
- 根据左右指针计算中间位置m,并比较m与m+1的值,**如果m较大**,则左侧存在峰值,r=m,**如果m+1较大**,则右侧存在峰值,l=m+1
75+
- 时间复杂度:O(logN)
76+
77+
![算法动图](https://i.loli.net/2019/05/22/5ce4acefdd49632328.gif)
78+
79+
### 代码
80+
81+
```java
82+
class Solution {
83+
public int findPeakElement(int[] nums) {
84+
int left = 0, right = nums.length - 1;
85+
for (; left < right; ) {
86+
int mid = left + (right - left) / 2;
87+
if (nums[mid] > nums[mid + 1]) {
88+
right = mid;
89+
} else {
90+
left = mid + 1;
91+
}
92+
}
93+
return left;
94+
}
95+
}
96+
```
97+
98+
<span style="display:block;text-align:center;">后台回复「<strong>算法</strong>」,加入天天算法群<span>
99+
<span style="display:block;text-align:center;">觉得算法直击灵魂,欢迎点击<strong>在看</strong>和<strong>转发</strong><span>
100+
101+
![](https://i.loli.net/2019/05/20/5ce23b33cc01d73486.gif)

docs/algorithm/674.md

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
# 天天算法 LeetCode-674-最长连续递增序列
2+
3+
## 题目链接
4+
5+
https://leetcode-cn.com/problems/longest-continuous-increasing-subsequence/
6+
7+
## 题目描述
8+
9+
给定一个未经排序的整数数组,找到最长且连续的的递增序列。
10+
11+
示例 1:
12+
13+
```bash
14+
输入: [1,3,5,4,7]
15+
输出: 3
16+
解释: 最长连续递增序列是 [1,3,5], 长度为3。
17+
尽管 [1,3,5,7] 也是升序的子序列, 但它不是连续的,因为5和7在原数组里被4隔开。
18+
```
19+
20+
示例 2:
21+
22+
```bash
23+
输入: [2,2,2,2,2]
24+
输出: 1
25+
解释: 最长连续递增序列是 [2], 长度为1。
26+
```
27+
28+
注意:数组长度不会超过10000。
29+
30+
31+
32+
<br/>
33+
<br/>
34+
<br/>
35+
<br/>
36+
<br/>
37+
-------------------机智的思考线-------------------
38+
<br/>
39+
<br/>
40+
<br/>
41+
<br/>
42+
<br/>
43+
-------------------机智的思考线--------------------
44+
<br/>
45+
<br/>
46+
<br/>
47+
<br/>
48+
<br/>
49+
-------------------机智的思考线-------------------
50+
<br/>
51+
<br/>
52+
<br/>
53+
<br/>
54+
<br/>
55+
56+
57+
## 解题方案
58+
59+
### 思路
60+
61+
- 标签:遍历
62+
- 过程:
63+
- count为当前元素峰值,ans为最大峰值
64+
- 初始化count = 1
65+
- 从0位置开始遍历,遍历时根据前后元素状态判断是否递增,递增则count++,递减则count=1
66+
- 如果count>ans,则更新ans
67+
- 直到循环结束
68+
- 时间复杂度:O(N)
69+
70+
### 代码
71+
72+
```java
73+
class Solution {
74+
public int findLengthOfLCIS(int[] nums) {
75+
if(nums.length <= 1)
76+
return nums.length;
77+
int ans = 1;
78+
int count = 1;
79+
for(int i=0;i<nums.length-1;i++) {
80+
if(nums[i+1] > nums[i]) {
81+
count++;
82+
} else {
83+
count = 1;
84+
}
85+
ans = count > ans ? count : ans;
86+
}
87+
return ans;
88+
}
89+
}
90+
```
91+
92+
### 图解
93+
94+
<span style="display:block;text-align:center;">点击「<strong>阅读原文</strong>」打卡<span>
95+
<span style="display:block;text-align:center;">后台回复「<strong>算法</strong>」,加入天天算法群<span>
96+
<span style="display:block;text-align:center;">觉得算法直击灵魂,欢迎点击<strong>在看</strong>和<strong>转发</strong><span>
97+
98+
![](https://i.loli.net/2019/05/20/5ce23b33cc01d73486.gif)

docs/algorithm/704.md

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
# 画解算法 704-二分查找
2+
3+
## 题目链接
4+
5+
https://leetcode-cn.com/problems/binary-search/
6+
7+
## 题目描述
8+
9+
给定一个 `n` 个元素有序的(升序)整型数组 `nums` 和一个目标值 `target`,写一个函数搜索 `nums` 中的 `target`,如果目标值存在返回下标,否则返回 `-1`
10+
11+
示例 1:
12+
13+
```bash
14+
输入: nums = [-1,0,3,5,9,12], target = 9
15+
输出: 4
16+
解释: 9 出现在 nums 中并且下标为 4
17+
```
18+
19+
示例 2:
20+
21+
```bash
22+
输入: nums = [-1,0,3,5,9,12], target = 2
23+
输出: -1
24+
解释: 2 不存在 nums 中因此返回 -1
25+
```
26+
27+
提示:
28+
29+
1. 你可以假设 `nums` 中的所有元素是不重复的。
30+
2. `n` 将在 `[1, 10000]`之间。
31+
3. `nums` 的每个元素都将在 `[-9999, 9999]`之间。
32+
33+
## 解题方案
34+
35+
### 思路
36+
37+
- 标签:二分查找
38+
- 过程:
39+
- 设定左右指针
40+
- 找出中间位置,并判断该位置值是否等于target
41+
- nums[mid] == target 则返回该位置下标
42+
- nums[mid] > target 则右侧指针移到中间
43+
- nums[mid] < target 则左侧指针移到中间
44+
- 时间复杂度:O(logN)
45+
46+
### 图解
47+
48+
![fr&lt;x&gt;ame_00001.png](https://i.loli.net/2019/05/26/5ce9f1f150ddc71624.png)
49+
![fr&lt;x&gt;ame_00002.png](https://i.loli.net/2019/05/26/5ce9f1f14c49964826.png)
50+
![fr&lt;x&gt;ame_00003.png](https://i.loli.net/2019/05/26/5ce9f1f14b97412993.png)
51+
![fr&lt;x&gt;ame_00004.png](https://i.loli.net/2019/05/26/5ce9f1f14f39630408.png)
52+
![fr&lt;x&gt;ame_00005.png](https://i.loli.net/2019/05/26/5ce9f1f14868585029.png)
53+
![fr&lt;x&gt;ame_00006.png](https://i.loli.net/2019/05/26/5ce9f1f191c2541256.png)
54+
![fr&lt;x&gt;ame_00007.png](https://i.loli.net/2019/05/26/5ce9f1f3377ed39185.png)
55+
56+
57+
### 代码
58+
59+
```java
60+
class Solution {
61+
public int search(int[] nums, int target) {
62+
int left = 0, right = nums.length - 1;
63+
while(left<=right) {
64+
int mid = left + (right - left) / 2;
65+
if(nums[mid] == target) {
66+
return mid;
67+
} else if(nums[mid] > target) {
68+
right = mid - 1;
69+
} else {
70+
left = mid + 1;
71+
}
72+
}
73+
return -1;
74+
}
75+
}
76+
```
77+
78+
<span style="display:block;text-align:center;">点击「<strong>阅读原文</strong>」打卡<span>
79+
<span style="display:block;text-align:center;">后台回复「<strong>算法</strong>」,加入天天算法群<span>
80+
<span style="display:block;text-align:center;">觉得算法直击灵魂,欢迎点击<strong>在看</strong>和<strong>转发</strong><span>
81+
82+
![](https://i.loli.net/2019/05/20/5ce23b33cc01d73486.gif)

docs/algorithm/record.md

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,12 @@
22

33
## 2019.05
44

5-
- [884-两句话中的不常见单词文章](https://mp.weixin.qq.com/s/VOXoMQg57gdUmwo4553Uag)
6-
- [112-路径总和](https://mp.weixin.qq.com/s/_NdAjbWlYDV7z7LvMpuyDA)
7-
- [216-组合总和 III](https://mp.weixin.qq.com/s/XDpewlE0OUE1DYYE-XdoEg)
8-
- [938-二叉搜索树的范围和](https://mp.weixin.qq.com/s/ni6l_a1QMCi2sKuZDNoe4Q)
9-
- [96-不同的二叉搜索树]()
10-
- [101-对称二叉树]()
5+
- [884](https://mp.weixin.qq.com/s/VOXoMQg57gdUmwo4553Uag)
6+
- [112](https://mp.weixin.qq.com/s/_NdAjbWlYDV7z7LvMpuyDA)
7+
- [216](https://mp.weixin.qq.com/s/XDpewlE0OUE1DYYE-XdoEg)
8+
- [938](https://mp.weixin.qq.com/s/ni6l_a1QMCi2sKuZDNoe4Q)
9+
- [96]()
10+
- [101]()
11+
- [162]()
12+
- [674]()
13+
- [704]()

0 commit comments

Comments
 (0)