重复N次的元素(leetcode961)【String[]数组】

https://leetcode-cn.com/problems/n-repeated-element-in-size-2n-array/

在大小为 2N 的数组 A 中有 N+1 个不同的元素,其中有一个元素重复了 N 次。

返回重复了 N 次的那个元素。

 

示例 1:

输入:[1,2,3,3]
输出:3

示例 2:

输入:[2,1,2,5,3,2]
输出:2

示例 3:

输入:[5,1,5,2,5,3,5,4]
输出:5

 

提示:

  1. 4 <= A.length <= 10000
  2. 0 <= A[i] < 10000
  3. A.length 为偶数

因为有N+1个不同元素,且N个元素相同,所以可以想到先进行排序,从第1个数开始向后找,如果找到相同的元素就返回该元素,否则从第二个开始找......

一、 排序后直接找

import java.util.Arrays;
import java.util.Scanner;
public class Main {
	 static int repeatedNTimes(int []A) {
		if(A.length==2)   //2个数组的话,只能是A[0]=A[1]
			return A[0];
		Arrays.sort(A, 0, A.length);
	    int ans=A[0],num=1;
		for(int i=1;i

二、利用hashset去重(根据题目的特殊性,像2,7,3,7,3,5,3,4不是题目要求,应当如2,7,3,6,3,5,3,4,只有1个重复元素)

import java.util.HashSet;
import java.util.Scanner;
public class Main {
	 static int repeatedNTimes(int []A) {
		  HashSet res = new HashSet<>();
	        for(int i=0;i

 

其他做法见https://blog.csdn.net/qq_17550379/article/details/85228446,其中提到一个规律,如果我们不对数组进行排序的话,我们直接遍历数组。那么重复元素必然会有一对间隔0或者间隔1。 

 

你可能感兴趣的:(重复N次的元素(leetcode961)【String[]数组】)