首页 > 编程语言 >算法:请找出数组a所有重复元素和比较数组a和数组b得到不重复的新数组和比较数组a和数组b请找出所有重复元素

算法:请找出数组a所有重复元素和比较数组a和数组b得到不重复的新数组和比较数组a和数组b请找出所有重复元素

时间:2024-07-30 18:09:13浏览次数:16  
标签:找出 item 重复 countMap a1 int 数组

    /**
     * 1.给定数组int[] a,int[] b
     * (1)请找出数组a所有重复元素,例:int[] a = {1,2,3,4,8,9,3,5,1,3},结果int[] a1 = {1,1,3,3,3}
     * (2)比较数组a和数组b得到不重复的新数组,例:int[] a = {1,2,3,4,8,9,3,5,1,3},int[] b = {2,7,6,0,5},结果int[] c = {1,2,3,4,5,6,7,8,9,0}
     *  (3)比较数组a和数组b请找出所有重复元素,例:int[] a = {1,2,3,4,8,9,3,5,1,3},int[] b = {2,7,6,0,5},结果int[] e = {1,1,2,2,3,3,3,5,5}
     *
     */
    @Test
    public void suanfa42()
    {

        int[] a = {1,2,3,4,8,9,3,5,1,3};
        int[] b = {2,7,6,0,5};
        //          {1,3,7,6,0}

        //(1)请找出数组a所有重复元素,例:int[] a = {1,2,3,4,8,9,3,5,1,3},结果int[] a1 = {1,1,3,3,3}
        int[] a1 = this.getMethod1(a);
        System.out.println("a1 = " + a1);

        //(2)比较数组a和数组b得到不重复的新数组,例:int[] a = {1,2,3,4,8,9,3,5,1,3},int[] b = {2,7,6,0,5},结果int[] c = {1,2,3,4,5,6,7,8,9,0}
        int[] c = Stream.of(Arrays.stream(a).boxed(), Arrays.stream(b).boxed()).flatMap(item -> item).distinct()
                .mapToInt(Integer::valueOf).toArray();
        System.out.println("c = " + c);

        // (3)比较数组a和数组b请找出所有重复元素,例:int[] a = {1,2,3,4,8,9,3,5,1,3},int[] b = {2,7,6,0,5},结果int[] e = {1,1,2,2,3,3,3,5,5}
        int[] e = this.getMethod3(a, b);
        System.out.println("e = " + e);
        System.out.println("e = " + e.toString());

    }

    /**
     * (1)请找出数组a所有重复元素,例:int[] a = {1,2,3,4,8,9,3,5,1,3},结果int[] a1 = {1,1,3,3,3}
     *
     * @param a
     * @return
     */
    private int[] getMethod1(int[] a)
    {
        int[] a1 = new int[a.length];
        int index = 0;
        HashMap<Integer, Integer> countMap = new HashMap<>();
        for (int i : a)
        {
            if (countMap.containsKey(i))
            {
                Integer count = countMap.get(i);
                if (count == 1)
                {
                    a1[index++] = i;
                }
                a1[index++] = i;
                countMap.put(i, count + 1);
            }
            else
            {
                countMap.put(i, 1);
            }
        }
        return a1;
    }

    /**
     * (3)比较数组a和数组b请找出所有重复元素,例:int[] a = {1,2,3,4,8,9,3,5,1,3},int[] b = {2,7,6,0,5},结果int[] e = {1,1,2,2,3,3,3,5,5}
     *
     * @param a
     * @param b
     * @return
     */
    private int[] getMethod3(int[] a, int[] b)
    {
        int[] e = new int[a.length + b.length];

        // 合并两个数组并排序
        List<Integer> integers = Stream.of(Arrays.stream(a).boxed(), Arrays.stream(b).boxed())
                .flatMap(item -> item).sorted().collect(Collectors.toList());
        HashMap<Integer, Integer> countMap = new HashMap<>();
        int index = 0;
        for (Integer item : integers)
        {
            if (countMap.containsKey(item))
            {
                Integer count = countMap.get(item);
                if (count == 1)
                {
                    e[index++] = item;
                }
                e[index++] = item;
                countMap.put(item, count+1);

            }
            else
            {
                countMap.put(item, 1);
            }
        }
        return e;
    }

 

标签:找出,item,重复,countMap,a1,int,数组
From: https://www.cnblogs.com/saoge/p/18333065

相关文章

  • Android开发 - ArrayList类动态数组与ArrayList<Fragment>解析
    什么是ArrayListArrayList是Java编程语言中的一个类,它实现了动态数组的数据结构。简单来说,ArrayList允许我们创建一个可以动态增长或缩减的数组,这在处理需要频繁添加或删除元素的情况下非常有用主要特点和用途动态大小:ArrayList的大小可以根据需要动态增长或缩减,与普通的数......
  • Python正则表达式匹配数字的第一次重复
    示例:For0123123123,1应匹配,因为第二个1出现在任何其他数字重复之前。For01234554321,5应该匹配,因为第二个5出现在任何其他数字的重复之前。我尝试过的一些正则表达式:......
  • 利用结构体数组 实现学生信息管理系统(模块化编程)
    核心功能(必须实现):                        新增信息查询信息修改信息删除信息 信息排序扩展功能:                        按字符串索引, 插入信息 提升功能:                        账号注......
  • (算法)找出所有⼦集的异或总和再求和————<递归>
    1.题⽬链接:1863.找出所有⼦集的异或总和再求和 2.题⽬描述:3.解法(递归):算法思路:所有⼦集可以解释为:每个元素选择在或不在⼀个集合中(因此,⼦集有个)。本题我们需要求出所有⼦集,将它们的异或和相加。因为异或操作满⾜交换律,所以我们可以定义⼀个变量,直接记录当前状态的异......
  • 使用C99 变长数组和和零长数组特性封装协议回复消息
    背景:主从机交互协议中,需要针对不同控制字封装回复消息接口。本文使用变长数组特性和零长数组特性对这类接口进行统一封装。 1#pragmapack(1)2typedefstruct{3uint8_tmagic;4uint8_tlen_H;5uint8_tlen_L;6uint8_tcmd;7uint8_t......
  • VB中如何定义和使用数组
    在VisualBasic(VB)中,数组是一种数据结构,用于存储一系列相同类型的数据项。你可以定义数组的大小(即它可以存储多少个元素),并在程序中使用数组来存储和访问这些数据项。以下是在VB中定义和使用数组的基本步骤:定义数组使用Dim关键字:与声明单个变量一样,你使用Dim关键字来定义数组......
  • js-数组内置函数-filter、map、forEach、reduce
    1、过滤数组-filter筛选数组元素,并生成新数组//过滤出分数为60分以上的数据<script>constarr=[{'name':'张三','score':80},{'name':'张六','score':50},{'name':'李四','score&#......
  • 2024年华为OD机试真题-找出作弊的人-(C++/Java/python)-OD统一考试(C卷D卷)
    2024华为OD机试真题目录-(B卷C卷D卷)-【C++JavaPython】  题目描述公司组织了一次考试,现在考试结果出来了,想看一下有没人存在作弊行为,但是员工太多了,需要先对员工进行一次过滤,再进一步确定是否存在作弊行为。过滤的规则为:找到分差最小的员工ID对(p1,p2)列表,......
  • 嵌入式学习之路 7(C语言基础学习——数组)
        数组是一组相同类型数据的集合,也是一组相同类型变量的集合,同时数组本身也是一种数据类型。    在需要定义多个相同类型的产量时,按照以往的方法一个一个定义就相当繁琐,而数组可以批量处理多个数据。一、一维数组1、数组语法:类型说明符 数组名 [常量......
  • 【c语言】数组相关知识
    概念:数组是一组相同类型元素的集合(一种相同类型的变量的集合)      数组也是一种数据类型(构造类型),可以批量处理多个数据。      数组有一维数组、二维数组;特点:连续性      有序性      单一性数组在内存中开辟是线性连续且......