Skip to content

Commit 6f9ee75

Browse files
Merge pull request #80 from tuyula/master
"第一周作业"
2 parents 4f00c05 + b6e0648 commit 6f9ee75

File tree

3 files changed

+96
-0
lines changed

3 files changed

+96
-0
lines changed

Week_01/id_34/NOTE.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,5 @@
11
# 学习笔记
2+
感谢大佬们分享
3+
4+
自己属于菜鸟一枚, 所以看到大佬们的各种思路有的激动, 这周写的题目不多, 只是完成了任务, 但是一题多解让我感觉到思考比答案更重要, 自己通过不断的看高手的解题, 不断加深自己的脑图,
5+
但是发现自己看到题目不会那么懵逼, 可以先遍历自己大脑思考一下

Week_01/id_34/leetcode-189.py

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
from typing import List
2+
3+
4+
class Solution:
5+
# 重伤, 提交代码说是执行时间过长 43333333
6+
def rotate(self, nums: List[int], k: int) -> None:
7+
"""
8+
Do not return anything, modify nums in-place instead.
9+
"""
10+
n = len(nums)
11+
12+
if n == 0 or n == 1:
13+
return
14+
15+
if k > n:
16+
k = k % n
17+
18+
for i in range(k):
19+
temp = nums[n - 1]
20+
for j in range(n - 1, 0, -1):
21+
nums[j] = nums[j - 1]
22+
nums[0] = temp
23+
24+
# 和上面一样, 180 ms, 13.5 MB
25+
def rotate2(self, nums: List, k: int) -> None:
26+
"""
27+
Do not return anything, modify nums in-place instead.
28+
"""
29+
n = len(nums)
30+
31+
if n == 0 or n == 1:
32+
return
33+
34+
if k > n:
35+
k = k % n
36+
37+
for _ in range(k):
38+
nums.insert(0, nums.pop())
39+
40+
# 反转法, 72 ms, 13.2 MB
41+
def rotate3(self, nums: List, k: int) -> None:
42+
n = len(nums)
43+
44+
if n == 0 or n == 1:
45+
return
46+
47+
if k > n:
48+
k = k % n
49+
50+
self.reverse(nums=nums, s=0, end=n-1)
51+
self.reverse(nums=nums, s=0, end=k-1)
52+
self.reverse(nums=nums, s=k, end=n-1)
53+
54+
def reverse(self, nums: List, s: int, end: int):
55+
while end > s:
56+
nums[end], nums[s] = nums[s], nums[end]
57+
end -= 1
58+
s += 1
59+
60+
# 根据索引, 64 ms, 13.2 MB
61+
def rotate4(self, nums: List, k: int) -> None:
62+
n = len(nums)
63+
64+
if n == 0 or n == 1:
65+
return
66+
67+
if k > n:
68+
k = k % n
69+
70+
nums[:] = nums[-k:] + nums[:-k]

Week_01/id_34/leetcode-26.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
from typing import List
2+
3+
4+
class Solution:
5+
def removeDuplicates(self, nums: List[int]) -> int:
6+
i = 0
7+
for j in range(1, len(nums)):
8+
if nums[i] != nums[j]:
9+
i += 1
10+
nums[i] = nums[j]
11+
return i + 1 if nums else 0
12+
13+
14+
# 逆向, 但是没有原地排序
15+
class Solution2:
16+
def removeDuplicates(self, nums: List[int]) -> int:
17+
for i in range(len(nums)-1, 0, -1):
18+
print(i)
19+
if nums[i] == nums[i-1]:
20+
nums.pop(i)
21+
return len(nums) if nums else 0
22+

0 commit comments

Comments
 (0)