题解 | #数组中重复的数字#
数组中重复的数字
https://www.nowcoder.com/practice/6fe361ede7e54db1b84adc81d09d8524
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param numbers int整型一维数组 * @return int整型 */ public int duplicate (int[] numbers) { //方法二: HashMap<Integer,Integer> map = new HashMap<>(); for(int i=0;i<numbers.length;i++){ map.put(numbers[i],map.getOrDefault(numbers[i],0)+1); if(map.get(numbers[i]) > 1){ return numbers[i]; } } return -1; } }
拿到这道题,我有两个想法:
方法一:是先排序,在使用双指针找到重复的数字,
public int duplicate (int[] numbers) { Arrays.sort(numbers); for(int i=1;i<numbers.length;i++){ if(numbers[i] == numbers[i-1]){ return numbers[i]; } } return -1; }
方法二:使用HashMap
使用hashmap的原因是因为题目中说找出重复的数,使用可以使用hashmap,来get他出现的次数如果大于1则说明重复