1.矩阵中战斗力最弱的 K 行
给你一个大小为 m * n 的矩阵 mat,矩阵由若干军人和平民组成,分别用 1 和 0 表示。
请你返回矩阵中战斗力最弱的 k 行的索引,按从最弱到最强排序。
如果第 i 行的军人数量少于第 j 行,或者两行军人数量相同但 i 小于 j,那么我们认为第 i 行的战斗力比第 j 行弱。
军人 总是 排在一行中的靠前位置,也就是说 1 总是出现在 0 之前。
方法一:遍历+哈希表
#方法一:遍历+哈希表
def kWeakestRows(mat,k):
s={} #字典记录i对应的人数
res=[]
for i in range(len(mat)):
tem=0
for j in range(len(mat[i])):
if mat[i][j]==0:
break
tem+=1
s[i]=tem
s=sorted(s.items(),key=lambda x : x[1]) #排序,按照value
res=[]
for i in range(k):
res.append(s[i][0]) #添加元素
return res
2.检查整数及其两倍数是否存在
给你一个整数数组 arr,请你检查是否存在两个整数 N 和 M,满足 N 是 M 的两倍(即,N = 2 * M)。
更正式地,检查是否存在两个下标 i 和 j 满足:
i != j
0 <= i, j < arr.length
arr[i] == 2 * arr[j]
方法一:集合去重
#方法一:集合去重
def checkIfExist(arr):
s=set() #去重功能
for i in arr:
if i%2==0 and (i//2 in s):
return True #情况一
elif i*2 in s:
return True #情况二
s.add(i) #添加元素
return False