Skip to content

Commit a31e436

Browse files
author
wangliang
committed
测试更改
1 parent f89538c commit a31e436

File tree

690 files changed

+121378
-121378
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

690 files changed

+121378
-121378
lines changed

.gitignore

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
*~
2-
_book/
1+
*~
2+
_book/
33
.DS_Store

README.md

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
1-
# 介绍
2-
3-
题解预览地址:[https://leetcode.wang](https://leetcode.wang),推荐电脑端打开,手机打开的话将页面滑到最上边,左上角是菜单
4-
5-
leetcode 题目地址 https://leetcode.com/problemset/all/
6-
7-
github 项目地址:https://github.com/wind-liang/leetcode
8-
9-
为什么刷题:https://leetcode.wang/leetcode100%E6%96%A9%E5%9B%9E%E9%A1%BE.html
10-
11-
知乎开设了专栏,同步更新:[https://zhuanlan.zhihu.com/leetcode1024](https://zhuanlan.zhihu.com/leetcode1024),关注后可以及时收到更新,网站有时候可能出问题打不开,建议关注一下知乎专栏备用
12-
13-
准备刷一道,总结一道。
14-
15-
可以加好友一起交流。
16-
17-
微信: 17771420231
18-
19-
公众号: windliang,更新编程相关
20-
21-
如果觉得对你有帮助,记得给一个 star 哦 ^ ^
1+
# 介绍
2+
3+
题解预览地址:[https://leetcode.wang](https://leetcode.wang),推荐电脑端打开,手机打开的话将页面滑到最上边,左上角是菜单
4+
5+
leetcode 题目地址 https://leetcode.com/problemset/all/
6+
7+
github 项目地址:https://github.com/wind-liang/leetcode
8+
9+
为什么刷题:https://leetcode.wang/leetcode100%E6%96%A9%E5%9B%9E%E9%A1%BE.html
10+
11+
知乎开设了专栏,同步更新:[https://zhuanlan.zhihu.com/leetcode1024](https://zhuanlan.zhihu.com/leetcode1024),关注后可以及时收到更新,网站有时候可能出问题打不开,建议关注一下知乎专栏备用
12+
13+
准备刷一道,总结一道。
14+
15+
可以加好友一起交流。
16+
17+
微信: 17771420231
18+
19+
公众号: windliang,更新编程相关
20+
21+
如果觉得对你有帮助,记得给一个 star 哦 ^ ^

SUMMARY.md

Lines changed: 254 additions & 254 deletions
Large diffs are not rendered by default.

book.json

Lines changed: 51 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -1,52 +1,52 @@
1-
{
2-
"title": "leetcode",
3-
"author": "windliang",
4-
"description": "leetcode刷题",
5-
"language" : "zh-hans",
6-
"links": {
7-
"sidebar": {
8-
"Home": "https://windliang.wang"
9-
},
10-
"gitbook": true
11-
},
12-
"structure": {
13-
"readme": "README.md",
14-
"summary": "SUMMARY.md"
15-
16-
},
17-
"plugins": ["katex","splitter","anchor-navigation-ex","github","copy-code-button","-lunr", "-search", "search-plus","ad","-livereload","meta","sitemap","expandable-chapters-small"],
18-
"pluginsConfig": {
19-
"github": {
20-
"url": "https://github.com/wind-liang/leetcode"
21-
},
22-
"anchor-navigation-ex": {
23-
"multipleH1": false
24-
},
25-
"ad": {
26-
"contentBottom": "%3Cdiv%20id%3D%22wechat_subscriber%22%20style%3D%22display%3A%20block%3B%20padding%3A%2010px%200%3B%20margin%3A%2020px%20auto%3B%20width%3A%20100%25%3B%20text-align%3A%20center%22%3E%0A%20%20%20%20%20%20%20%20%3Cimg%20id%3D%22wechat_subscriber_qcode%22%20src%3D%22https%3A//windliang.oss-cn-beijing.aliyuncs.com/leetcode.jpg%22%20alt%3D%22windliang%20wechat%22%20style%3D%22width%3A%20800px%3B%20max-width%3A%20100%25%3B%22%3E%0A%20%20%20%20%20%20%20%20%3Cbr%3E%20%0A%20%3Cbr%3E%20%0A%20%3Cbr%3E%20%0A%20%20%20%20%20%20%20%20%20%3Cdiv%3E%u5982%u679C%u89C9%u5F97%u6709%u5E2E%u52A9%u7684%u8BDD%uFF0C%u53EF%u4EE5%u70B9%u51FB%20%3Ca%20href%3D%22https%3A//github.com/wind-liang/leetcode%22%20target%20%3D%20%22_blank%22%3E%u8FD9%u91CC%3C/a%3E%20%u5728%20github%20%u7ED9%u4E00%u4E2A%20star%20%u54E6%20%5E%5E%3C/div%3E%0A%3Cbr%3E%0A%3Cdiv%3E%u5982%u679C%u60F3%u7CFB%u7EDF%u7684%u5B66%u4E60%u6570%u636E%u7ED3%u6784%u548C%u7B97%u6CD5%uFF0C%u5F3A%u70C8%u63A8%u8350%u4E00%u4E2A%u6211%u4E4B%u524D%u5B66%u8FC7%u7684%u8BFE%u7A0B%uFF0C%u53EF%u4EE5%u70B9%u51FB%20%3Ca%20href%3D%22http%3A//gk.link/a/105Cw%22%20target%20%3D%20%22_blank%22%3E%u8FD9%u91CC%3C/a%3E%20%u67E5%u770B%u8BE6%u60C5%3C/div%3E%0A%3Cbr%3E%0A%3Cdiv%3E%u8BFE%u7A0B%u5728%u516C%u4F17%u53F7%u300C%u8BFE%u7A0B%u51CF%u51CF%u300D%u8D2D%u4E70%u4F1A%20%3Ca%20href%3D%22https%3A//windliang.wang/2020/05/31/%25E6%259E%2581%25E5%25AE%25A2%25E6%2597%25B6%25E9%2597%25B4%25E4%25BC%2598%25E6%2583%25A0%25E7%25BA%25A2%25E5%258C%2585%25E8%25BF%2594%25E7%258E%25B0/%22%20target%20%3D%20%22_blank%22%3E%u66F4%u4F18%u60E0%u4E00%u4E9B%3C/a%3E%3C/div%3E%0A%20%20%20%20%20%20%20%20%3C/div%3E%3Cscript%20async%20src%3D%22https%3A//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js%22%3E%3C/script%3E%3Cins%20class%3D%22adsbygoogle%22%20style%3D%22display%3Ablock%22%20data-ad-client%3D%22ca-pub-1480477141602191%22%20data-ad-slot%3D%228293832619%22%20data-ad-format%3D%22auto%22%20data-full-width-responsive%3D%22true%22%3E%3C/ins%3E%3Cscript%3E%20%28adsbygoogle%20%3D%20window.adsbygoogle%20%7C%7C%20%5B%5D%29.push%28%7B%7D%29%3B%3C/script%3E%0A%3Cdiv%20%20style%3D%22display%3A%20block%3B%20padding%3A%2010px%200%3B%20margin%3A%2020px%20auto%3B%20width%3A%20100%25%3B%20text-align%3A%20center%22%3E%0A%3Ca%20href%3D%22http%3A//www.beian.miit.gov.cn%22%20rel%3D%22nofollow%22%20%20target%3D%22_blank%22%20style%3D%22text-decoration%3Anone%3Bcolor%3A%23000%3B%22%3E%u664BICP%u590719005643%u53F7%3C/a%3E%0A%3C/div%3E"
27-
},
28-
"meta": {
29-
"data": [
30-
{
31-
"name": "baidu-site-verification",
32-
"content": "iFzduP9Qsi"
33-
},
34-
{
35-
"name": "google-site-verification",
36-
"content": "qwgHd8kl7vEvBa4OR81jLieQG9UKcY2r8ocztMhzA8o"
37-
}
38-
]
39-
},
40-
"sitemap": {
41-
"hostname": "https://leetcode.wang"
42-
}
43-
44-
},
45-
"styles":{
46-
"website":"websiteStyle.css"
47-
},
48-
"pdf": {
49-
"fontSize": 16
50-
},
51-
"gitbook" : "3.2.3"
1+
{
2+
"title": "leetcode",
3+
"author": "windliang",
4+
"description": "leetcode刷题",
5+
"language" : "zh-hans",
6+
"links": {
7+
"sidebar": {
8+
"Home": "https://windliang.wang"
9+
},
10+
"gitbook": true
11+
},
12+
"structure": {
13+
"readme": "README.md",
14+
"summary": "SUMMARY.md"
15+
16+
},
17+
"plugins": ["katex","splitter","anchor-navigation-ex","github","copy-code-button","-lunr", "-search", "search-plus","ad","-livereload","meta","sitemap","expandable-chapters-small"],
18+
"pluginsConfig": {
19+
"github": {
20+
"url": "https://github.com/wind-liang/leetcode"
21+
},
22+
"anchor-navigation-ex": {
23+
"multipleH1": false
24+
},
25+
"ad": {
26+
"contentBottom": "%3Cdiv%20id%3D%22wechat_subscriber%22%20style%3D%22display%3A%20block%3B%20padding%3A%2010px%200%3B%20margin%3A%2020px%20auto%3B%20width%3A%20100%25%3B%20text-align%3A%20center%22%3E%0A%20%20%20%20%20%20%20%20%3Cimg%20id%3D%22wechat_subscriber_qcode%22%20src%3D%22https%3A//windliang.oss-cn-beijing.aliyuncs.com/leetcode.jpg%22%20alt%3D%22windliang%20wechat%22%20style%3D%22width%3A%20800px%3B%20max-width%3A%20100%25%3B%22%3E%0A%20%20%20%20%20%20%20%20%3Cbr%3E%20%0A%20%3Cbr%3E%20%0A%20%3Cbr%3E%20%0A%20%20%20%20%20%20%20%20%20%3Cdiv%3E%u5982%u679C%u89C9%u5F97%u6709%u5E2E%u52A9%u7684%u8BDD%uFF0C%u53EF%u4EE5%u70B9%u51FB%20%3Ca%20href%3D%22https%3A//github.com/wind-liang/leetcode%22%20target%20%3D%20%22_blank%22%3E%u8FD9%u91CC%3C/a%3E%20%u5728%20github%20%u7ED9%u4E00%u4E2A%20star%20%u54E6%20%5E%5E%3C/div%3E%0A%3Cbr%3E%0A%3Cdiv%3E%u5982%u679C%u60F3%u7CFB%u7EDF%u7684%u5B66%u4E60%u6570%u636E%u7ED3%u6784%u548C%u7B97%u6CD5%uFF0C%u5F3A%u70C8%u63A8%u8350%u4E00%u4E2A%u6211%u4E4B%u524D%u5B66%u8FC7%u7684%u8BFE%u7A0B%uFF0C%u53EF%u4EE5%u70B9%u51FB%20%3Ca%20href%3D%22http%3A//gk.link/a/105Cw%22%20target%20%3D%20%22_blank%22%3E%u8FD9%u91CC%3C/a%3E%20%u67E5%u770B%u8BE6%u60C5%3C/div%3E%0A%3Cbr%3E%0A%3Cdiv%3E%u8BFE%u7A0B%u5728%u516C%u4F17%u53F7%u300C%u8BFE%u7A0B%u51CF%u51CF%u300D%u8D2D%u4E70%u4F1A%20%3Ca%20href%3D%22https%3A//windliang.wang/2020/05/31/%25E6%259E%2581%25E5%25AE%25A2%25E6%2597%25B6%25E9%2597%25B4%25E4%25BC%2598%25E6%2583%25A0%25E7%25BA%25A2%25E5%258C%2585%25E8%25BF%2594%25E7%258E%25B0/%22%20target%20%3D%20%22_blank%22%3E%u66F4%u4F18%u60E0%u4E00%u4E9B%3C/a%3E%3C/div%3E%0A%20%20%20%20%20%20%20%20%3C/div%3E%3Cscript%20async%20src%3D%22https%3A//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js%22%3E%3C/script%3E%3Cins%20class%3D%22adsbygoogle%22%20style%3D%22display%3Ablock%22%20data-ad-client%3D%22ca-pub-1480477141602191%22%20data-ad-slot%3D%228293832619%22%20data-ad-format%3D%22auto%22%20data-full-width-responsive%3D%22true%22%3E%3C/ins%3E%3Cscript%3E%20%28adsbygoogle%20%3D%20window.adsbygoogle%20%7C%7C%20%5B%5D%29.push%28%7B%7D%29%3B%3C/script%3E%0A%3Cdiv%20%20style%3D%22display%3A%20block%3B%20padding%3A%2010px%200%3B%20margin%3A%2020px%20auto%3B%20width%3A%20100%25%3B%20text-align%3A%20center%22%3E%0A%3Ca%20href%3D%22http%3A//www.beian.miit.gov.cn%22%20rel%3D%22nofollow%22%20%20target%3D%22_blank%22%20style%3D%22text-decoration%3Anone%3Bcolor%3A%23000%3B%22%3E%u664BICP%u590719005643%u53F7%3C/a%3E%0A%3C/div%3E"
27+
},
28+
"meta": {
29+
"data": [
30+
{
31+
"name": "baidu-site-verification",
32+
"content": "iFzduP9Qsi"
33+
},
34+
{
35+
"name": "google-site-verification",
36+
"content": "qwgHd8kl7vEvBa4OR81jLieQG9UKcY2r8ocztMhzA8o"
37+
}
38+
]
39+
},
40+
"sitemap": {
41+
"hostname": "https://leetcode.wang"
42+
}
43+
44+
},
45+
"styles":{
46+
"website":"websiteStyle.css"
47+
},
48+
"pdf": {
49+
"fontSize": 16
50+
},
51+
"gitbook" : "3.2.3"
5252
}

leetCode-1-Two-Sum.md

Lines changed: 100 additions & 100 deletions
Original file line numberDiff line numberDiff line change
@@ -1,101 +1,101 @@
1-
## 题目描述 (简单难度)
2-
3-
![](http://windliang.oss-cn-beijing.aliyuncs.com/1_two_sum.jpg)
4-
5-
给定一个数组和一个目标和,从数组中找两个数字相加等于目标和,输出这两个数字的下标。
6-
7-
## 解法一
8-
9-
简单粗暴些,两重循环,遍历所有情况看相加是否等于目标和,如果符合直接输出。
10-
11-
``` JAVA
12-
public int[] twoSum(int[] nums, int target) {
13-
int []ans=new int[2];
14-
for(int i=0;i<nums.length;i++){
15-
for(int j=(i+1);j<nums.length;j++){
16-
if(nums[i]+nums[j]==target){
17-
ans[0]=i;
18-
ans[1]=j;
19-
return ans;
20-
}
21-
}
22-
}
23-
return ans;
24-
}
25-
```
26-
27-
28-
时间复杂度:两层 for 循环,O(n²)
29-
30-
空间复杂度:O(1)
31-
32-
## 解法二
33-
34-
在上边的解法中看下第二个 for 循环步骤。
35-
36-
```JAVA
37-
for(int j=(i+1);j<nums.length;j++){
38-
if(nums[i]+nums[j]==target){
39-
```
40-
41-
我们换个理解方式:
42-
43-
```JAVA
44-
for(int j=(i+1);j<nums.length;j++){
45-
sub=target-nums[i]
46-
if(nums[j]==sub){
47-
```
48-
49-
第二层 for 循环无非是遍历所有的元素,看哪个元素等于 sub ,时间复杂度为 O(n)。
50-
51-
有没有一种方法,不用遍历就可以找到元素里有没有等于 sub 的?
52-
53-
hash table !!!
54-
55-
我们可以把数组的每个元素保存为 hash 的 key,下标保存为 hash 的 value 。
56-
57-
这样只需判断 sub 在不在 hash 的 key 里就可以了,而此时的时间复杂度仅为 O1)!
58-
59-
需要注意的地方是,还需判断找到的元素不是当前元素,因为题目里讲一个元素只能用一次。
60-
61-
``` JAVA
62-
public int[] twoSum(int[] nums, int target) {
63-
Map<Integer,Integer> map=new HashMap<>();
64-
for(int i=0;i<nums.length;i++){
65-
map.put(nums[i],i);
66-
}
67-
for(int i=0;i<nums.length;i++){
68-
int sub=target-nums[i];
69-
if(map.containsKey(sub)&&map.get(sub)!=i){
70-
return new int[]{i,map.get(sub)};
71-
}
72-
}
73-
throw new IllegalArgumentException("No two sum solution");
74-
}
75-
```
76-
77-
时间复杂度:比解法一少了一个 for 循环,降为 O(n)
78-
79-
空间复杂度:所谓的空间换时间,这里就能体现出来, 开辟了一个 hash table ,空间复杂度变为 O(n)
80-
81-
## 解法三
82-
83-
看解法二中,两个 for 循环,他们长的一样,我们当然可以把它合起来。复杂度上不会带来什么变化,变化仅仅是不需要判断是不是当前元素了,因为当前元素还没有添加进 hash 里。
84-
85-
``` JAVA
86-
public int[] twoSum(int[] nums, int target) {
87-
Map<Integer,Integer> map=new HashMap<>();
88-
for(int i=0;i<nums.length;i++){
89-
int sub=target-nums[i];
90-
if(map.containsKey(sub)){
91-
return new int[]{i,map.get(sub)};
92-
}
93-
map.put(nums[i], i);
94-
}
95-
throw new IllegalArgumentException("No two sum solution");
96-
}
97-
```
98-
99-
## 总结
100-
1+
## 题目描述 (简单难度)
2+
3+
![](http://windliang.oss-cn-beijing.aliyuncs.com/1_two_sum.jpg)
4+
5+
给定一个数组和一个目标和,从数组中找两个数字相加等于目标和,输出这两个数字的下标。
6+
7+
## 解法一
8+
9+
简单粗暴些,两重循环,遍历所有情况看相加是否等于目标和,如果符合直接输出。
10+
11+
``` JAVA
12+
public int[] twoSum(int[] nums, int target) {
13+
int []ans=new int[2];
14+
for(int i=0;i<nums.length;i++){
15+
for(int j=(i+1);j<nums.length;j++){
16+
if(nums[i]+nums[j]==target){
17+
ans[0]=i;
18+
ans[1]=j;
19+
return ans;
20+
}
21+
}
22+
}
23+
return ans;
24+
}
25+
```
26+
27+
28+
时间复杂度:两层 for 循环,O(n²)
29+
30+
空间复杂度:O(1)
31+
32+
## 解法二
33+
34+
在上边的解法中看下第二个 for 循环步骤。
35+
36+
```JAVA
37+
for(int j=(i+1);j<nums.length;j++){
38+
if(nums[i]+nums[j]==target){
39+
```
40+
41+
我们换个理解方式:
42+
43+
```JAVA
44+
for(int j=(i+1);j<nums.length;j++){
45+
sub=target-nums[i]
46+
if(nums[j]==sub){
47+
```
48+
49+
第二层 for 循环无非是遍历所有的元素,看哪个元素等于 sub ,时间复杂度为 O(n)。
50+
51+
有没有一种方法,不用遍历就可以找到元素里有没有等于 sub 的?
52+
53+
hash table !!!
54+
55+
我们可以把数组的每个元素保存为 hash 的 key,下标保存为 hash 的 value 。
56+
57+
这样只需判断 sub 在不在 hash 的 key 里就可以了,而此时的时间复杂度仅为 O1)!
58+
59+
需要注意的地方是,还需判断找到的元素不是当前元素,因为题目里讲一个元素只能用一次。
60+
61+
``` JAVA
62+
public int[] twoSum(int[] nums, int target) {
63+
Map<Integer,Integer> map=new HashMap<>();
64+
for(int i=0;i<nums.length;i++){
65+
map.put(nums[i],i);
66+
}
67+
for(int i=0;i<nums.length;i++){
68+
int sub=target-nums[i];
69+
if(map.containsKey(sub)&&map.get(sub)!=i){
70+
return new int[]{i,map.get(sub)};
71+
}
72+
}
73+
throw new IllegalArgumentException("No two sum solution");
74+
}
75+
```
76+
77+
时间复杂度:比解法一少了一个 for 循环,降为 O(n)
78+
79+
空间复杂度:所谓的空间换时间,这里就能体现出来, 开辟了一个 hash table ,空间复杂度变为 O(n)
80+
81+
## 解法三
82+
83+
看解法二中,两个 for 循环,他们长的一样,我们当然可以把它合起来。复杂度上不会带来什么变化,变化仅仅是不需要判断是不是当前元素了,因为当前元素还没有添加进 hash 里。
84+
85+
``` JAVA
86+
public int[] twoSum(int[] nums, int target) {
87+
Map<Integer,Integer> map=new HashMap<>();
88+
for(int i=0;i<nums.length;i++){
89+
int sub=target-nums[i];
90+
if(map.containsKey(sub)){
91+
return new int[]{i,map.get(sub)};
92+
}
93+
map.put(nums[i], i);
94+
}
95+
throw new IllegalArgumentException("No two sum solution");
96+
}
97+
```
98+
99+
## 总结
100+
101101
题目比较简单,毕竟暴力的方法也可以解决。唯一闪亮的点就是,时间复杂度从 O(n²)降为 O(n) 的时候,对 hash 的应用,有眼前一亮的感觉。

0 commit comments

Comments
 (0)