多端BFS
如果本题从地图入手 会发现复杂度很高
但是如果从特殊地形 水域 入手 就会发现问题 和之前的BFS类似
将水域地形加入队列, 出队时,根据贪心,对其领域未被访问的地形进行地形增加,
最终返回该地图
class Solution:
def highestPeak(self, isWater: List[List[int]]) -> List[List[int]]:
m,n = len(isWater),len(isWater[0])
que = deque()
vit = [[False]*n for _ in range(m)]
for i in range(m):
for j in range(n):
if isWater[i][j] ==1 :
que.append((i,j))
vit[i][j] = True
isWater[i][j]=0
ner = [(0, -1), (0, 1), (1, 0), (-1, 0)]
while que:
x,y = que.popleft()
for i,j in ner:
a,b =x+i,y+j
if -1<a<m and -1<b<n and not vit[a][b]:
isWater[a][b] = isWater[x][y]+1
que.append((a,b))
vit[a][b] =True
return isWater
用一个字典统计一下 扫一遍
class Solution:
def firstUniqChar(self, s: str) -> int:
lis = defaultdict(int)
for a in s:
lis[a] +=1
for i in lis:
if lis[i] ==1:
return s.index(i)
return -1
|