题号169
方法1:排序法
对数组排序,重复的元素会排在一起,题目定义的多数元素为数组中出现次数 大于 ⌊ n/2 ⌋ 的元素,对排序后的数组求中间元素值,这个中间元素就是多数元素
class Solution:
def majorityElement(self, nums: List[int]) -> int:
nums.sort()
left = 0
right =len(nums)-1
mid = (left+right)//2
n = nums[mid]
return n
方法2:哈希表
统计数组中每个元素出现的次数,遍历key,找key的值大于 ⌊ n/2 ⌋ 的元素
class Solution:
def majorityElement(self, nums: List[int]) -> int:
dict={}
for num in nums:
if num not in dict:
dict[num]=0
dict[num]=dict.get(num)+1
mid = len(nums)//2
for key in dict.keys():
if dict[key]>mid:
return key
return -1
题号200
方法1:DFS
class Solution:
def numIslands(self, grid: List[List[str]]) -> int:
if len(grid)==0:
return 0
row = len(grid)
col = len(grid[0])
count =0
for r in range (row):
for c in range (col):
if grid[r][c] == '1':
count+=1
self.DFS(grid,r,c)
return count
def DFS(self,grid,r,c):
if r<0 or c<0 or r>=len(grid) or c>=len(grid[0]) or grid[r][c]== '0':
return 0
grid[r][c]='0'
self.DFS(grid,r+1,c)
self.DFS(grid,r-1,c)
self.DFS(grid,r,c+1)
self.DFS(grid,r,c-1)