剑指offer 面试题51 java实现

来源:互联网 发布:女神联盟英雄升阶数据 编辑:程序博客网 时间:2024/05/17 07:42
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;}}


0 0