Skip to content

Commit 8e02d5d

Browse files
authored
Create 吕思澄
1 parent 0fd6bbe commit 8e02d5d

1 file changed

Lines changed: 86 additions & 0 deletions

File tree

Week04/吕思澄

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
#柠檬水找零
2+
#记录5和10的个数,如果有一个透支了,就说明不能满足找零
3+
class Solution:
4+
def lemonadeChange(self, bills: List[int]) -> bool:
5+
i=j=0
6+
for k in bills:
7+
if k==5:i+=1
8+
elif k==10:j+=1;i-=1
9+
else:
10+
if j==0:i-=3
11+
else:i-=1;j-=1
12+
if i<0 or j<0:return False
13+
return True
14+
15+
#买股票的最佳时机
16+
#首先设置收益profit=0,接着从1到len(prices)进行迭代,后面的值是否比前面的值大,如果后面值减去前面值成立,则累加给profit,如果不成立那么就不管它,因为不会影响结果,最后全部迭代完return profit
17+
class Solution:
18+
def maxProfit(self, prices: List[int]) -> int:
19+
profit = 0
20+
for i in range(1,len(prices)):
21+
if prices[i-1] < prices[i]:
22+
profit += prices[i] - prices[i-1]
23+
return profit
24+
#单词接龙
25+
class Solution:
26+
def ladderLength(self, beginWord: str, endWord: str, wordList: List[str]) -> int:
27+
# BFS
28+
from collections import deque, defaultdict
29+
# 先验判断
30+
if endWord not in wordList:
31+
return 0
32+
# 提前构建邻接表 -> 用generic state做key
33+
intermidiateWords = defaultdict(list)
34+
wordLen = len(beginWord)
35+
for word in wordList:
36+
for i in range(wordLen):
37+
intermidiateWords[word[:i] + '*' + word[i+1:]].append(word)
38+
# 建队列 加初始状态
39+
queue = deque()
40+
memo = set()
41+
queue.append(beginWord)
42+
memo.add(beginWord)
43+
step = 1
44+
while queue:
45+
size = len(queue)
46+
for _ in range(size):
47+
curWord = queue.popleft()
48+
for i in range(wordLen):
49+
intermidiateCurWord = curWord[:i] + '*' + curWord[i+1:]
50+
# 下一个状态的所有word
51+
for word in intermidiateWords[intermidiateCurWord]:
52+
if word == endWord:
53+
return step + 1
54+
if word not in memo:
55+
queue.append(word)
56+
memo.add(word)
57+
step += 1
58+
else:
59+
return 0
60+
#岛屿数量
61+
#把grid扩一圈,定义计数变量ret。
62+
循环网格:如果是"1",计数变量加一,然后搜索并替换相关连的"1"和本身为"0"。
63+
class Solution:
64+
def numIslands(self, grid: List[List[str]]) -> int:
65+
if not grid:
66+
return 0
67+
68+
def bfs(i: int, j: int) -> None:
69+
if i == 0 or j == 0 or i == x-1 or j == y-1 or grid[i][j] == "0":
70+
return
71+
grid[i][j] = "0"
72+
bfs(i-1, j)
73+
bfs(i, j-1)
74+
bfs(i+1, j)
75+
bfs(i, j+1)
76+
77+
x = len(grid)+2
78+
y = len(grid[0])+2
79+
grid = [["0"]*x]+[["0"]+i+["0"] for i in grid]+[["0"]*x]
80+
ret = 0
81+
for i in range(1, x-1):
82+
for j in range(1, y-1):
83+
if grid[i][j] == "1":
84+
bfs(i, j)
85+
ret += 1
86+
return ret

0 commit comments

Comments
 (0)