面试:数组:数组配对
2016-05-02 21:11
661 查看
给定N个整数,N为偶数,是否可以找到N/2对,使得每对和能被k整除。(每个元素只能出现在一个配对中)
算法
生成A[k]数组,大小是k,A[i]记录余数是i的元素的个数。
被k整除的个数是否是偶数,若是奇数,false;
k是偶数,k/2是否 是偶数
余数i和余数k-i的个数是否相等
算法
生成A[k]数组,大小是k,A[i]记录余数是i的元素的个数。
被k整除的个数是否是偶数,若是奇数,false;
k是偶数,k/2是否 是偶数
余数i和余数k-i的个数是否相等
import java.util.*; public class Solution { public boolean checkPairable(int[] nums,int k){ if(k<=0) return false; //额外的数组保存余数 int[] counts = new int[k]; for(int num:nums) counts[num%k] ++; //初始化数组 // 整除k的个数是否是偶数 if(counts[0]%2 != 0) return false; //k是欧式,查看k/2是否是偶数 if(k%2==0){ if(counts[k/2]%2!=0) return false; } for(int i=1;i<=k/2;i++) { //余数配对 if(counts[i]!=counts[k-i]) return false; } return true; } public static void main(String[] args) { Solution s=new Solution(); int[] test={5,2,4,0,1,4,1}; int k=3; boolean res=s.checkPairable(test,k); System.out.println(res); } }
相关文章推荐
- iOS面试题 OC 部分
- 阿里面试题集合
- 程序员丰富个人生活
- 狸猫的面试——项目描述——矢量裁剪
- String类--单例模式等面试题
- 经典SQL练习题5----面试题及答案
- 经典SQL练习题4----面试题及相关知识
- 转行做程序员
- 程序之思考(1)
- 剑指offer-面试题59:对称的二叉树
- 2016职业技能大赛信息安全管理与评估赛项任务书
- iOS面试前的一些准备(持续更新)
- 程序员智力题
- 剑指offer-面试题58:二叉树的下一个结点
- 剑指offer 面试题(1)
- 银行信息技术类笔试题(面试)-浅析
- 剑指offer-面试题57:删除链表中重复的结点
- 删除链表中重复的结点
- iOS面试题系列之常见算法
- Android面试题——ListView(二)