美文网首页计算客刷题笔记
排序后的数组删除重复数字

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

作者: Airycode | 来源:发表于2018-05-10 13:54 被阅读12次

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

相关文章

网友评论

    本文标题:排序后的数组删除重复数字

    本文链接:https://www.haomeiwen.com/subject/ozmzrftx.html