题解 | #数组中重复的数字#
数组中重复的数字
https://www.nowcoder.com/practice/6fe361ede7e54db1b84adc81d09d8524
第一想法是两层for循环
import java.util.*; public class Solution { public int duplicate (int[] numbers) { if (numbers.length == 0) { return -1; } for (int i = 0; i < numbers.length; i++) { for(int j=i+1;j<numbers.length;j++){ if (numbers[i] == numbers[j]) { return numbers[j]; } } } return -1; } }
时间复杂度O(n^2)
排名第一的写法
新建一个boolean数组,长度和numbers一样。默认值都为false。
看else后的语句,b[numbers[i]] = true; 把numbers数组中的值作为b数组的下标,赋为true。
public int duplicate (int[] numbers) { boolean[] b = new boolean[numbers.length]; for(int i=0;i<numbers.length;i++){ if(b[numbers[i]]){ return numbers[i]; }else{ b[numbers[i]] = true; } } return -1; }