首页 > 编程语言 >每日算法之数组中只出现一次的两个数字

每日算法之数组中只出现一次的两个数字

时间:2022-12-24 14:44:49浏览次数:46  
标签:map 数字 int value 算法 数组 new

JZ56 数组中只出现一次的两个数字

题目

一个整型数组里除了两个数字只出现一次,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字

思路

算法实现

既然有两个数字只出现了一次,我们就统计每个数字的出现次数,利用哈希表的快速根据key值访问其频率值。

具体做法:

step 1:遍历数组,用哈希表统计每个数字出现的频率。
step 2:然后再遍历一次数组,对比哈希表,找到出现频率为1的两个数字。
step 3:最后整理次序输出。

代码

package mid.JZ56数组中只出现一次的两个数字;

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param array int整型一维数组 
     * @return int整型一维数组
     */
    public int[] FindNumsAppearOnce (int[] array) {
        // write code here
        if(array.length  == 0) return new int[0];
        HashMap<Integer, Integer> map = new HashMap<>();
        int[] result = new int[2];
        for (int value : array) {
            if (!map.containsKey(value)) {
                map.put(value, 1);
            } else {
                map.put(value, map.get(value) + 1);
            }
        }
        int index = 0;
        for (Integer key: map.keySet()) {
            if (map.get(key) == 1) {
                result[index] = key;
                index++;
            }
            if (index == 2) break;
        }
        Arrays.sort(result);
        return result;
    }

    public static void main(String[] args) {
        int[] ints = new Solution().FindNumsAppearOnce(new int[]{1, 4, 1, 6});
        System.out.println(Arrays.toString(ints));
    }
}

标签:map,数字,int,value,算法,数组,new
From: https://www.cnblogs.com/loongnuts/p/17002852.html

相关文章

  • 基于K-means聚类算法进行客户人群分析
    摘要:在本案例中,我们使用人工智能技术的聚类算法去分析超市购物中心客户的一些基本数据,把客户分成不同的群体,供营销团队参考并相应地制定营销策略。本文分享自华为云社区《​......
  • 基于K-means聚类算法进行客户人群分析
    摘要:在本案例中,我们使用人工智能技术的聚类算法去分析超市购物中心客户的一些基本数据,把客户分成不同的群体,供营销团队参考并相应地制定营销策略。本文分享自华为云社区《......
  • [LeetCode]013-罗马数字转整数
    >>>传送门题目罗马数字包含以下七种字符:I,V,X,L,C,D和M。字符数值I1V5X10L50C1......
  • 算法--分治算法
    分治算法 一、算法思想  分治法作为一种常见的算法思想,其概念为:把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题,直到最后子问题可以......
  • 基本形态学算法
    基本形态学算法为什么要做基本形态学算法的研究和实现?是因为形态学是一个非常有力,应用广泛的工具,但同时也是研究不是很清楚的工具。往往一个恰到好处的变换,就能......
  • 移除数组中的元素
    移除数组中的元素,双指针算法,利用元数组元素覆盖的方式,利用指针移动到指定的元素,即可一次便利实现vara=[1,2,3,4,5]vart=3varremove=(nums,t)=>{for(varf......
  • 力扣-303-区域和检索-数组不可变
    前缀和入门模板题我想着“前缀和”嘛,那就整一个“前缀和”出来,但是好像空间效率特别差感觉有点空间换时间的意思classNumArray{private: vector<int>prefixSum;pu......
  • 关于 贪心算法 知友们的看法
    贪心算法的产生背景是什么?它主要解决的是哪一类的问题?这些问题可以总结成一个固定的什么样的模型?产生背景没了解过,但是我以前学建模的时候是这样理解的:贪心算法是一种思......
  • 95% 的算法都是基于这 6 种算法思想!!!
     https://zhuanlan.zhihu.com/p/431240843 1递归算法1.1算法策略1.2适用场景1.3使用递归算法求解的一些经典问题   DOM树为例 2分治算法......
  • 【随机接入】基于随机接入代价的异构网络速率分配算法
    1.软件版本matlab2013b2.本算法理论知识在协作传输中,把业务流分拆到不同网络进行传输可解决单一网络无法传输的问题,同时降低接入阻塞率并提高网络利用率。随机接入......