排序后的数组删除重复数字

【链接】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;
        
        
    }
    
}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容