您的位置:首页 > 职场人生

剑指offer 面试题51 java实现

2016-05-01 17:23 274 查看
package com.offer.algorithm;

import java.util.HashSet;

public class Test51 {
public static void main(String[] args) {
int[] intArr = new int[] { 4, 3, 1, 0, 2, 5, 6 };
System.out.println(getDuplication2(intArr));
}

// 方法一:使用HashSet的方法(空间复杂度O(n),时间复杂度O(n))
public static boolean getDuplication1(int[] intArr) {
HashSet<Integer> hs = new HashSet<Integer>();
loop: for (int num : intArr) {
if (hs.add(num)) {
continue loop;
} else {
return true;
}
}
return false;
}

// 使用空间复杂度O(n),时间复杂度O(1)的方法
public static boolean getDuplication2(int[] intArr) {
for (int i = 0; i < intArr.length; i++) {
while (intArr[i] != i) {
if (intArr[i] == intArr[intArr[i]]) {
return true;
}
// 将intArr[i]与intArr[intArr[i]]交换
int temp = intArr[i];
intArr[i] = intArr[temp];
intArr[temp] = temp;
}
}
return false;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: