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 85985d1

Browse files
Merge branch 'master' of github.com:youngyangyang04/leetcode-master
2 parents a0cfe9e + 253bddc commit 85985d1

File tree

4 files changed

+47
-42
lines changed

4 files changed

+47
-42
lines changed

‎problems/0019.删除链表的倒数第N个节点.md‎

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -165,20 +165,17 @@ class Solution:
165165
* }
166166
*/
167167
func removeNthFromEnd(head *ListNode, n int) *ListNode {
168-
dummyHead := &ListNode{}
169-
dummyHead.Next = head
170-
cur := head
171-
prev := dummyHead
172-
i := 1
173-
for cur != nil {
174-
cur = cur.Next
175-
if i > n {
176-
prev = prev.Next
177-
}
178-
i++
179-
}
180-
prev.Next = prev.Next.Next
181-
return dummyHead.Next
168+
dummyNode := &ListNode{0, head}
169+
fast, slow := dummyNode, dummyNode
170+
for i := 0; i <= n; i++ { // 注意<=,否则快指针为空时,慢指针正好在倒数第n个上面
171+
fast = fast.Next
172+
}
173+
for fast != nil {
174+
fast = fast.Next
175+
slow = slow.Next
176+
}
177+
slow.Next = slow.Next.Next
178+
return dummyNode.Next
182179
}
183180
```
184181

‎problems/0027.移除元素.md‎

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,27 @@ class Solution:
224224

225225
```
226226

227+
``` python 3
228+
# 相向双指针法
229+
# 时间复杂度 O(n)
230+
# 空间复杂度 O(1)
231+
class Solution:
232+
def removeElement(self, nums: List[int], val: int) -> int:
233+
n = len(nums)
234+
left, right = 0, n - 1
235+
while left <= right:
236+
while left <= right and nums[left] != val:
237+
left += 1
238+
while left <= right and nums[right] == val:
239+
right -= 1
240+
if left < right:
241+
nums[left] = nums[right]
242+
left += 1
243+
right -= 1
244+
return left
245+
246+
```
247+
227248
### Go:
228249

229250
```go

‎problems/0070.爬楼梯完全背包版本.md‎

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,21 @@ class climbStairs{
165165
```
166166

167167
### Python3:
168+
```python3
169+
def climbing_stairs(n,m):
170+
dp = [0]*(n+1) # 背包总容量
171+
dp[0] = 1
172+
# 排列题,注意循环顺序,背包在外物品在内
173+
for j in range(1,n+1):
174+
for i in range(1,m+1):
175+
if j>=i:
176+
dp[j] += dp[j-i] # 这里i就是重量而非index
177+
return dp[n]
168178

179+
if __name__ == '__main__':
180+
n,m = list(map(int,input().split(' ')))
181+
print(climbing_stairs(n,m))
182+
```
169183

170184

171185
### Go:

‎problems/0332.重新安排行程.md‎

Lines changed: 1 addition & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -418,34 +418,7 @@ class Solution {
418418
}
419419
```
420420

421-
### Python
422-
回溯 使用used数组
423-
424-
```python
425-
class Solution:
426-
def findItinerary(self, tickets: List[List[str]]) -> List[str]:
427-
tickets.sort() # 先排序,这样一旦找到第一个可行路径,一定是字母排序最小的
428-
used = [0] * len(tickets)
429-
path = ['JFK']
430-
results = []
431-
self.backtracking(tickets, used, path, 'JFK', results)
432-
return results[0]
433-
434-
def backtracking(self, tickets, used, path, cur, results):
435-
if len(path) == len(tickets) + 1: # 终止条件:路径长度等于机票数量+1
436-
results.append(path[:]) # 将当前路径添加到结果列表
437-
return True
438-
439-
for i, ticket in enumerate(tickets): # 遍历机票列表
440-
if ticket[0] == cur and used[i] == 0: # 找到起始机场为cur且未使用过的机票
441-
used[i] = 1 # 标记该机票为已使用
442-
path.append(ticket[1]) # 将到达机场添加到路径中
443-
state = self.backtracking(tickets, used, path, ticket[1], results) # 递归搜索
444-
path.pop() # 回溯,移除最后添加的到达机场
445-
used[i] = 0 # 标记该机票为未使用
446-
if state:
447-
return True # 只要找到一个可行路径就返回,不继续搜索
448-
421+
### Python
449422
```
450423
回溯 使用字典
451424
```python

0 commit comments

Comments
(0)

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