您的位置:首页 > 大数据 > 人工智能

LeetCode 217. Contains Duplicate

2016-05-01 23:55 447 查看
package com.gloomy.leetcode;

/**
* Given an array of integers, find if the array contains any duplicates. Your
* function should return true if any value appears at least twice in the array,
* and it should return false if every element is distinct.
*
* @author 过路的守望
*
*/
public class ContainsDuplicate {

/**
* nums中是否含重复值 利用bitmap 来检测
* 时间复杂度O(N)
* @param nums
* @return
*/
public boolean containsDuplicate(int[] nums) {
int len = nums.length;
if (nums == null || len == 0) {
return false;
}
int max = 0;
/*
* 找出数组中的最大值,以便确定bitmap大小
*/
for(int k:nums){
if(k>max){
max = k;
}
}
int size = max / 32 + 1;
System.out.println(size);
/*
* bitmap空间大小
*/
int[] bitmap = new int[size];
for (int k : nums) {
int index = k / 32;
int padding = k % 32;
/*
* 如果k所在为已经为1直接返回true
*/
if ((bitmap[index] & (1 << padding)) != 0) {
return true;
} else {
bitmap[index] = bitmap[index] ^ (1 << padding);
}
}
return false;

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: