leetcode 1497. 檢查數組對是否可以被 k 整除(C++)

給你一個整數數組 arr 和一個整數 k ,其中數組長度是偶數,值爲 n 。

現在需要把數組恰好分成 n / 2 對,以使每對數字的和都能夠被 k 整除。

如果存在這樣的分法,請返回 True ;否則,返回 False 。

 

示例 1:

輸入:arr = [1,2,3,4,5,10,6,7,8,9], k = 5
輸出:true
解釋:劃分後的數字對爲 (1,9),(2,8),(3,7),(4,6) 以及 (5,10) 。

示例 2:

輸入:arr = [1,2,3,4,5,6], k = 7
輸出:true
解釋:劃分後的數字對爲 (1,6),(2,5) 以及 (3,4) 。

示例 3:

輸入:arr = [1,2,3,4,5,6], k = 10
輸出:false
解釋:無法在將數組中的數字分爲三對的同時滿足每對數字和能夠被 10 整除的條件。

示例 4:

輸入:arr = [-10,10], k = 2
輸出:true

示例 5:

輸入:arr = [-1,1,-2,2,-3,3,-4,4], k = 3
輸出:true

 

提示:

  • arr.length == n
  • 1 <= n <= 10^5
  • n 爲偶數
  • -10^9 <= arr[i] <= 10^9
  • 1 <= k <= 10^5

C++

class Solution {
public:
    bool canArrange(vector<int>& arr, int k) 
    {
    	vector<int> tmp(k,0);
    	for(auto it:arr)
    	{
    		tmp[(it%k+k)%k]++;
    	}
    	for(int i=1;i<k/2;i++)
    	{
    		if(tmp[i]!=tmp[k-i])
    		{
    			return false;
    		}
    	}
    	if(tmp[0]%2)
    	{
    		return false;
    	}
    	if(0==k%2 && 1==tmp[k/2]%2)
    	{
    		return false;
    	}
    	return true;
    }
};

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章