[LeetCode] 1497. 检查数组对是否可以被 k 整除

104 阅读1分钟

1497. 检查数组对是否可以被 k 整除

Medium

思路

  • 根据余数进行排序,余数为0的数两两组合可以被k整除
  • 余数为0的数的数量为奇数,说明不能形成两两成对
  • 余数最小的数和余数最大的数,组合如果可以被k整除,说明可以成对,否则不能成对

以上,AC!

代码

python3

class Solution:
    def canArrange(self, arr: List[int], k: int) -> bool:
      res = [x%k for x in arr]
      res.sort()
      if res.count(0) % 2 == 1:
        return False
      i = 0
      j = len(arr) - 1
      while i < j:
        if res[i] == 0:
          i += 1
          continue
        if (res[i] + res[j]) != k:
          return False
        i += 1
        j -= 1
      return True