Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 16134c6

Browse files
revise sth
1 parent 7cb26d2 commit 16134c6

File tree

3 files changed

+34
-15
lines changed

3 files changed

+34
-15
lines changed

‎Array/array.md

Lines changed: 30 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
1-
### 数组
2-
#### 什么是数组
1+
## 数组
32

4-
  我们知道常用的数据存储方式有两种:顺序存储和非顺序存储。顺序存储就是把数据存储在一块连续的空间内。数组(array)就是典型的顺序存储,而链表就是典型的非顺序存储。
3+
### 什么是数组
54

6-
  数组通常用于存储一系列相同类型的数据。当我们在创建数组时,会在内存中划分出一块连续的内存用于存储数据,插入数据时,会将数据按顺序存储在这块连续的内存中,读取时通过访问数组的索引迅速取出。数组名就是一个指针,指向这段内存的起始地址。通过数组的类型,编译器知道在访问下一个元素的时候需要在内存中后移多少个字节。由于数组在存储时是顺序存储的,存储数据的内存也是连续的,所以数组在读取数据时比较容易,随机访问速度快,但是插入和删除就比较费劲了。读取可以直接根据索引,插入和删除则比较耗时,插一个数据需要移动大量元素,在内存中空出一个元素的空间,然后将要增加的元素放在其中,如果想删除一个元素,同样需要移动大量元素去掉被移动的元素。所以如果需求是快速访问数据,很少或者几乎不插入和删除元素,数组是一个不错的选择
5+
​ 我们知道常用的数据存储方式有两种:顺序存储和非顺序存储。顺序存储就是把数据存储在一块连续的空间内。数组(array)就是典型的顺序存储,而链表就是典型的非顺序存储
76

8-
  最常见的有一维数组和二维数组,稍微复杂一点的是多维数组和动态数组。在c++中,STL提供了Vector,在Java中,Collection集合中提供了ArrayList和Vector,对于Python而言,内置的List就是一个动态指针数组。当列表中没有空间存储新的元素时,列表会动态地改变大小以容纳新的元素,每次改变大小时,会预留一部分空间以降低改变大小的频率
7+
​ 数组通常用于存储一系列相同类型的数据。当我们在创建数组时,会在内存中划分出一块连续的内存用于存储数据,插入数据时,会将数据按顺序存储在这块连续的内存中,读取时通过访问数组的索引迅速取出。数组名就是一个指针,指向这段内存的起始地址。通过数组的类型,编译器知道在访问下一个元素的时候需要在内存中后移多少个字节。由于数组在存储时是顺序存储的,存储数据的内存也是连续的,所以数组在读取数据时比较容易,随机访问速度快,但是插入和删除就比较费劲了。读取可以直接根据索引,插入和删除则比较耗时,插一个数据需要移动大量元素,在内存中空出一个元素的空间,然后将要增加的元素放在其中,如果想删除一个元素,同样需要移动大量元素去掉被移动的元素。所以如果需求是快速访问数据,很少或者几乎不插入和删除元素,数组是一个不错的选择
98

10-
#### 类别
9+
​ 最常见的有一维数组和二维数组,稍微复杂一点的是多维数组和动态数组。在c++中,STL提供了Vector,在Java中,Collection集合中提供了ArrayList和Vector,对于Python而言,内置的List就是一个动态指针数组。当列表中没有空间存储新的元素时,列表会动态地改变大小以容纳新的元素,每次改变大小时,会预留一部分空间以降低改变大小的频率。
10+
11+
### 类别
1112
- 1.无序数组
1213
- 概念:未经过排序的数组
1314
- 优点:插入快
@@ -31,17 +32,19 @@
3132
### 题型总结
3233
【一维数组】
3334
#### 1.K-Sum
34-
  这类题目通常会给定一个数组和一个值,让求出这个数组中两个/三个/K个值的和等于这个给定的值target。leetcode第一题就是two-sum,对于这类题目,首先看题目要求的时间复杂度和空间复杂度是什么,其次看有没有限制条件,如要求不能有重复的子数组或者要求按照升序/降序排列等。解法如下:
35+
这类题目通常会给定一个数组和一个值,让求出这个数组中两个/三个/K个值的和等于这个给定的值target。leetcode第一题就是two-sum,对于这类题目,首先看题目要求的时间复杂度和空间复杂度是什么,其次看有没有限制条件,如要求不能有重复的子数组或者要求按照升序/降序排列等。解法如下:
3536
- 暴力解法:最常见,但是通常会超时,只能作为备选,
3637
- hash-map:建立一个hash-map循环遍历一次即可
3738
- two-pointers:定位两个指针根绝和的大小来移动另外一个。这里设定的指针个数根据题目中K的个数来定。3Sum中可以设定3个指针,固定两个,移动另一个
3839

3940

4041
#### 2.区间问题
41-
  这类题目通常会给一个包含多个子数组的数组,然后针对区间是否重合来判断true or false。解题技巧:
42-
1. 按start排序
43-
2. 在前一个区间的end和后一个区间的start找交集
44-
- 例题:252 meeting room[easy](https://leetcode.com/problems/meeting-rooms/)
42+
​ 这类题目通常会给一个包含多个子数组的数组,然后针对区间是否重合来判断true or false。解题技巧:
43+
44+
> 1. 按start排序
45+
> 2. 在前一个区间的end和后一个区间的start找交集
46+
47+
- 例题: [252 meeting room](https://leetcode.com/problems/meeting-rooms/)
4548
- 题目理解:给定一个数组,包含每个会议的开始时间和结束时间[[s1,e1],[s2,e2],...] (si < ei),判断一个人能否参加所有的会议
4649
- test case:
4750
>Example1:
@@ -96,7 +99,7 @@ class Solution(object):
9699
97100
- code:
98101
Java解法
99-
```
102+
```java
100103
class Solution {
101104
public int minSubArrayLen(int s, int[] nums) {
102105
int res = Integer.MAX_VALUE;//因为是求min,所以设定是Max_VALUE,然后最后的res比较就行,注意res不是0
@@ -111,7 +114,7 @@ class Solution {
111114
return res == Integer.MAX_VALUE? 0:res;
112115
```
113116
Python解法
114-
```
117+
```python
115118
class Solution:
116119

117120
def minSubArrayLen(self, s, nums):
@@ -126,8 +129,20 @@ def minSubArrayLen(self, s, nums):
126129
return result if result <= len(nums) else 0
127130
```
128131

129-
【二维数组】
130-
#### 4.Rotate题型
132+
133+
134+
### 二维数组
135+
136+
#### Rotate题型
137+
138+
139+
140+
141+
142+
143+
144+
145+
131146

132147

133148

‎Array/pic/subarray.png

1.12 MB
Loading[フレーム]

‎Linklist/linklist.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -692,6 +692,8 @@ class Solution(object):
692692

693693
> LeetCode中含有拆分类的题目:
694694

695+
| 序号 | 题目 | 难度 | 代码 |
696+
| ---- | ------------------------------------------------------------ | ------ | ----------------- |
695697
| 725 | [Split Linked List in Parts ](https://leetcode.com/problems/split-linked-list-in-parts) | Medium | python、java、c++ |
696698
| ---- | ------------------------------------------------------------ | ------ | ----------------- |
697699
| 86 | [Partition List ](https://leetcode.com/problems/partition-list) | Medium | python、java、c++ |
@@ -812,6 +814,8 @@ class Solution(object):
812814

813815
> LeetCode中 包含链表排序的题目:
814816

817+
| 序号 | 题目 | 难度 | 代码 |
818+
| ---- | ------------------------------------------------------------ | ------ | ----------------- |
815819
| 143 | [Reorder List ](https://leetcode.com/problems/reorder-list) | Medium | python、java、c++ |
816820
| ---- | ------------------------------------------------------------ | ------ | ----------------- |
817821
| 147 | [Insertion Sort List ](https://leetcode.com/problems/insertion-sort-list) | Medium | python、java、c++ |

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /