zoukankan      html  css  js  c++  java
  • 【leetcode】1497. Check If Array Pairs Are Divisible by k

    题目如下:

    Given an array of integers arr of even length n and an integer k.

    We want to divide the array into exactly n / 2 pairs such that the sum of each pair is divisible by k.

    Return True If you can find a way to do that or False otherwise. 

    Example 1:

    Input: arr = [1,2,3,4,5,10,6,7,8,9], k = 5
    Output: true
    Explanation: Pairs are (1,9),(2,8),(3,7),(4,6) and (5,10).
    

    Example 2:

    Input: arr = [1,2,3,4,5,6], k = 7
    Output: true
    Explanation: Pairs are (1,6),(2,5) and(3,4).
    

    Example 3:

    Input: arr = [1,2,3,4,5,6], k = 10
    Output: false
    Explanation: You can try all possible pairs to see that there is no way to divide arr into 3 pairs each with sum divisible by 10.
    

    Example 4:

    Input: arr = [-10,10], k = 2
    Output: true
    

    Example 5:

    Input: arr = [-1,1,-2,2,-3,3,-4,4], k = 3
    Output: true

    Constraints:

    • arr.length == n
    • 1 <= n <= 10^5
    • n is even.
    • -10^9 <= arr[i] <= 10^9
    • 1 <= k <= 10^5

    解题思路:统计arr中每个元素除k后的余数出现的次数,接下来只要判断余数i出现的次数是否和余数k-i出现的次数相等即可。对于余数为0的情况,只要满足出现的次数为偶数即可。

    代码如下:

    class Solution(object):
        def canArrange(self, arr, k):
            """
            :type arr: List[int]
            :type k: int
            :rtype: bool
            """
            dic = {}
            for i in arr:
                remainder = i % k
                dic[remainder] =  dic.setdefault(remainder,0) + 1
            for key,val in dic.iteritems():
                if val == 0:continue
                elif key == 0 and val % 2 != 0:
                    return False
                elif key == 0 and val % 2 == 0:
                    continue
                elif k - key not in dic or dic[k-key] != val:
                    return False
            return True
  • 相关阅读:
    Python中replace 不起作用的问题
    java 获取视频时长、大小
    MySQL 自定义排序
    加 synchronized 关键字进行同步
    SQL 查询当前周的开始、结束日期
    Java 按照一定的规则生成递增的编号
    Java中BigDecimal的8种舍入模式
    Lamada 表达式之 sort 排序
    搭建Java环境
    初识JAVA(学习记录)
  • 原文地址:https://www.cnblogs.com/seyjs/p/13217870.html
Copyright © 2011-2022 走看看