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 704d9b3

Browse files
committed
Update array.md
数组
1 parent 891fd56 commit 704d9b3

File tree

1 file changed

+84
-0
lines changed

1 file changed

+84
-0
lines changed

‎data_structure/array.md‎

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,90 @@
1010

1111
## 常见题型
1212

13+
### [移除元素](https://leetcode.cn/problems/remove-element/)
14+
> 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。
15+
> 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。
16+
> 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。
17+
18+
思路:两种方法,一是倒序便利,不断删除等于val的元素,剩下的就是新书组;二是正向遍历去使用快慢指针,不断把不等于val的元素给变换到数组的前边
19+
20+
**Python版本一**
21+
```python
22+
class Solution:
23+
def removeElement(self, nums: List[int], val: int) -> int:
24+
if len(nums) == 0: return 0
25+
i = len(nums) - 1
26+
while i >= 0:
27+
if nums[i] == val: nums.pop(i)
28+
i = i - 1
29+
return len(nums)
30+
```
31+
32+
**Python版本二**
33+
```python
34+
class Solution:
35+
def removeElement(self, nums: List[int], val: int) -> int:
36+
if len(nums) == 0: return 0
37+
slow = 0
38+
for i in range(len(nums)):
39+
if nums[i] == val: continue
40+
else:
41+
nums[slow] = nums[i]
42+
slow = slow + 1
43+
return slow
44+
```
45+
46+
### [删除有序数组中的重复项](https://leetcode.cn/problems/remove-duplicates-from-sorted-array/)
47+
>给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。
48+
>
49+
>由于在某些语言中不能改变数组的长度,所以必须将结果放在数组nums的第一部分。更规范地说,如果在删除重复项之后有 k 个元素,那么 nums 的前 k 个元素应该保存最终结果。
50+
>
51+
>将最终结果插入 nums 的前 k 个位置后返回 k 。
52+
>
53+
>不要使用额外的空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。
54+
55+
思路: 同样的快慢指针
56+
57+
**Python版本**
58+
```python
59+
class Solution:
60+
def removeDuplicates(self, nums: List[int]) -> int:
61+
slow, i = 0, 0
62+
while i < len(nums):
63+
while i < len(nums) - 1 and nums[i] == nums[i + 1]:
64+
i = i + 1
65+
nums[slow] = nums[i]
66+
slow = slow + 1
67+
i = i + 1
68+
69+
return slow
70+
```
71+
72+
### [移动零](https://leetcode.cn/problems/move-zeroes/)
73+
> 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
74+
> 请注意 ,必须在不复制数组的情况下原地对数组进行操作。
75+
76+
**Python版本**
77+
```python
78+
class Solution:
79+
def moveZeroes(self, nums: List[int]) -> None:
80+
"""
81+
Do not return anything, modify nums in-place instead.
82+
"""
83+
slow = 0
84+
for i in range(len(nums)):
85+
if nums[i] == 0: continue
86+
else:
87+
nums[slow] = nums[i]
88+
slow = slow + 1
89+
90+
while slow < len(nums):
91+
nums[slow] = 0
92+
slow = slow + 1
93+
return nums
94+
```
95+
96+
1397
### [spiral-matrix](https://leetcode-cn.com/problems/spiral-matrix/)
1498

1599
> 给定一个包含 *m* x *n* 个元素的矩阵(*m* 行, *n* 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。

0 commit comments

Comments
(0)

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