【链接】https://nanti.jisuanke.com/t/22
【题目】
给定升序排序的数组,如果数组有 2 个或 2 个以上相同的数字,去掉他们,直到剩下 2 个为止。
例如:
数组 A[] = [1,1,1,2,2,3]
你的算法需要返回新数组的长度 5,
此时 A 为 [1,1,2,2,3]。
输入格式
第一行输入一个不超过 200 的数字 n,第二行输入 A[n]。
输出格式
输出新数组的长度。
样例输入
6
1 1 1 1 3 3
样例输出
4
【代码实现】
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int number = input.nextInt();
int [] arr = new int[number];
for (int i=0;i<arr.length;i++){
arr[i] = input.nextInt();
}
Arrays.sort(arr);//升序排列
int result = handle(arr);
System.out.println(result);
}
//去掉重复的数据
private static int handle(int[] arr) {
Map<Integer,Integer> resultMap = new HashMap<Integer,Integer>();
for (int i=0;i<arr.length;i++) {
int temp = arr[i];
boolean isHave = resultMap.containsKey(temp);
if (!isHave) {
resultMap.put(temp, 1);
} else {
//取出来value
int value = resultMap.get(temp);
value+=1;
resultMap.put(temp, value);
}
}
//循环resultMap
int sum = 0;
for (Map.Entry<Integer, Integer> entry:resultMap.entrySet()) {
int value=entry.getValue();
if (value>2) {
value=2;
}
sum+=value;
}
return sum;
}
}