class solution(object):
"""@param: n: the number of queens
@return: all distinct solutions
"""def solvenqueens(self, n):
# write your code here
ans =
def dfs(nums ,row):
#從上到下一行一行放皇后
#nums[row] = col,表示第row行的皇后放在第col列
if row == n:
#如果放到最後一行,表示放完了
return
for col in range(n):
#對於此時的第row行,我們從左往右先嘗試著放皇后,nums[row] = col
nums[row] = col
if vaild(nums,row):
#如果此時放在row行的第col列,這個位置時是合法的,
#ok繼續向下一行row+1行放皇后
dfs(nums,row + 1)
def vaild(nums,row):
#對於nums[0:row-1],已經是合理的放置位置。
#那麼此時放在row行的第nums[row]位置,是否是合法的
for i in range(row):
#行數肯定不同,因為是從上到下放置的,row一直是增的,
#nums[i] == nums[row]表示列數相同,
#abs(nums[row]-nums[i]) == abs(row-i)表示在對角線上(45度)
if nums[i] == nums[row] or abs(nums[row]-nums[i]) == abs(row-i):
return false
return true
#深度優先遍歷
dfs([none for _ in range(n)],0)
#畫圖results = [ for _ in range(len(ans))]
for i in range(len(ans)):
#ans[i]是一行,ans[i] =j的話就表示在第i行裡把皇后放在第j個位置,
#就是乙個合法的擺放。
for col in ans[i]:
tmp = "."*n
return results
leetcode 字母異位詞分組(python)
題目 給定乙個字串陣列,將字母異位片語合在一起。字母異位詞指字母相同,但排列不同的字串。示例 輸入 eat tea tan ate nat bat 輸出 ate eat tea nat tan bat 說明 所有輸入均為小寫字母。不考慮答案輸出的順序。注意 需熟悉字典的相關使用方法 class so...
leetcode 200 島嶼數量 python
給你乙個由 1 陸地 和 0 水 組成的的二維網格,請你計算網格中島嶼的數量。島嶼總是被水包圍,並且每座島嶼只能由水平方向或豎直方向上相鄰的陸地連線形成。此外,你可以假設該網格的四條邊均被水包圍。示例 1 輸入 11110 11010 11000 00000 輸出 1示例 2 輸入 11000 11...
leetcode 字母異位詞分組 python3
給定乙個字串陣列,將字母異位片語合在一起。字母異位詞指字母相同,但排列不同的字串。示例 輸入 eat tea tan ate nat bat 輸出 ate eat tea nat tan bat 說明 所有輸入均為小寫字母。不考慮答案輸出的順序。python中使用 字典 維護乙個分組表,鍵值 key...