首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用List计算int数组的出现次数

可以通过以下步骤实现:

  1. 创建一个空的HashMap,用于存储每个整数及其出现次数。
  2. 遍历整数数组,对于每个整数:
    • 如果HashMap中已存在该整数作为键,则将对应的值加1。
    • 如果HashMap中不存在该整数作为键,则将该整数作为键,初始值设为1。
  • 遍历HashMap,输出每个整数及其出现次数。

以下是一个示例代码:

代码语言:txt
复制
import java.util.*;

public class Main {
    public static void main(String[] args) {
        int[] nums = {1, 2, 3, 2, 1, 3, 4, 5, 4, 4};
        Map<Integer, Integer> countMap = new HashMap<>();

        for (int num : nums) {
            if (countMap.containsKey(num)) {
                countMap.put(num, countMap.get(num) + 1);
            } else {
                countMap.put(num, 1);
            }
        }

        for (Map.Entry<Integer, Integer> entry : countMap.entrySet()) {
            System.out.println("整数 " + entry.getKey() + " 出现次数为 " + entry.getValue());
        }
    }
}

这段代码使用HashMap来统计整数数组中每个整数的出现次数。运行结果如下:

代码语言:txt
复制
整数 1 出现次数为 2
整数 2 出现次数为 2
整数 3 出现次数为 2
整数 4 出现次数为 3
整数 5 出现次数为 1

推荐的腾讯云相关产品:腾讯云数据库(TencentDB),提供高性能、高可用、可扩展的数据库服务。产品介绍链接地址:https://cloud.tencent.com/product/cdb

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

数组使用arrays.aslist转化为集合_int数组list集合

1、toString(int[] a) int arr[]={3,5,7}; //toString(int[] a) 返回指定数组内容字符串表示形式。...System.out.println(Arrays.toString(arr));//[3, 5, 7] 2、把数组变成list集合有什么好处? 可以使用集合思想和方法来操作数组元素。...注意:将数组变成集合,不可以使用集合增删方法。 因为数组长度是固定。 contains get indexOf() subList(); 如果你增删。...(“tan”)); //Contains:true //list.add(“China”); //java.lang.UnsupportedOperationException //int...那么变成集合时,数组元素就直接转成集合中元素。 如果数组元素都是基本数据类型,那么会将该数组作为集合中元素存在。 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。

86320

数字在有序数组出现次数

题目描述 Input: nums = 1, 2, 3, 3, 3, 3, 4, 6 K = 3 Output: 4 解题思路 只要能找出给定数字 k 在有序数组第一个位置和最后一个位置,就能知道该数字出现次数...先考虑如何实现寻找数字在有序数组第一个位置。正常二分查找如下,在查找到给定元素 k 之后,立即返回当前索引下标。...public int binarySearch(int[] nums, int K) { int l = 0, h = nums.length - 1; while (l <= h) {...public int GetNumberOfK(int[] nums, int K) { int first = binarySearch(nums, K); int last = binarySearch...这是因为 binarySearch 只会返回 [0, nums.length - 1] 范围值,对于 binarySearch([2,2], 3) ,我们希望返回 3 插入 nums 中位置,也就是数组最后一个位置再往后一个位置

63020

数字在排序数组出现次数

题目描述 统计一个数字在排序数组出现次数 思想:两次二分查找法 有序序列,就使用二分查找思路。...一开始思路是先使用二分法找到k,然后从k开始向两边统计k个数,但统计这个时间复杂度达到了O(n),导致整个算法复杂度O(nlogn) 而通过两次二分查找,分别找到第一个k和最后一个k,可以使时间复杂度减少为...O(logn) ps:这里还有个问题是,要在主函数里判断一下,是不是最先函数和最后k函数返回位置相同,在这个情况下有两种情况.第一个是没找到,第二个是arr里只存在一个数且为k 代码 package...com.algorithm.offer; import org.junit.Test; public class GetNumberOfK { //题目描述 //统计一个数字在排序数组出现次数...public int GetNumberOfK(int[] array, int k) { if (array == null) { return 0;

43120

数组出现次数超过一半数字

今天继续来学习《剑指Offer》系列一道经典题目,依旧给出了非常详细题解和精美的配图与动画。 一、题目描述 数组中有一个数字出现次数超过数组长度一半,请找出这个数字。...你可以假设数组是非空,并且给定数组总是存在多数元素。...示例 1: 输入: [1, 2, 3, 2, 2, 2, 5, 4, 2] 输出: 2 限制: 1 <= 数组长度 <= 50000 二、题目解析 题目明确说明了在这个数组中肯定有一个数字出现次数超过数组长度一半...数组出现次数超过一半数字 :https://leetcode-cn.com/problems/shu-zu-zhong-chu-xian-ci-shu-chao-guo-yi-ban-de-shu-zi-lcof...= 0; // candidate 表示擂主编号 // 一开始,擂台上没有擂主 int candidate = 0; // 数组所有数字开始轮番上擂台进行挑战

26830

数组出现次数超过一半数字

题目描述 数组中有一个数字出现次数超过数组长度一半,请找出这个数字。例如输入一个长度为9数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组出现了5次,超过数组长度一半,因此输出2。...1,2,3,4,5,6,7,8,9 (12)(34)(56)(78)(9),但是9出现次数并没有超过数组长度一半,所以需要检查多那个数是否超过数组长度一半。...又比如 5, 1, 5, 2, 4, 3, 6, 7, 5 (51)(52)(43)(76)(5)最后留下了5,但是5出现次数并没有超过数组长度一半,不符合。 ​...先在数组中随机选一个数字,然后调整数组中数字顺序,使得比选中数字小数字都排在它左边,比选中数字大数字都排在它右边,这也是快排思想。...此时中间数字出现次数一定超过了数组长度一半(当然需要检查,原因同方案一)。

14900

JavaScript | 获取数组单词并统计出现次数

HTML5学堂(码匠):如何通过JavaScrip实现数组元素查找?在一个数组当中,找到所有的单词,并统计每个单词出现次数。...功能需求 在一个自定义数组当中,包含多个单词,请使用JavaScipt获取数组每个单词,并统计出每个单词出现次数。...功能分析与实现思路 可以借助对象特性,使用对象属性表示数组具体单词,使用对象属性属性值表示相应单词出现次数。 完整代码实现 ? 代码输出结果 ?...相关知识 对象属性两种表示方法 对于对象来说,可以使用“对象.属性”方法来表示,也可以使用“对象[属性]”方法来表示。 ? for in循环 for-in循环用于遍历对象中所有属性和属性值。...很适用于不确定对象中有什么属性时候使用。基本语法为: for(变量 in 对象){ 语句 } 其中随着循环进行,变量表示对象中各个属性,而“对象[变量]”则表示对象中属性对应属性值。

5K70

数组出现次数超过一半数字

,或者有空间限制等,尽量体现在代码中,保证读者可以不漏掉书中细节) 尽量精简话语,避免冗长解释 给出代码可运行,注释齐全,关注细节问题 题目介绍 数组中有一个数字出现次数超过数组长度一半,请找出这个数字...例如输入一个长度为9数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组出现了5次,超过数组长度一半,因此输出2。如果不存在则输出0。 解题思路 方法一 思路 该方法改变了原数组。...这是一个典型递归过程 找到这个数字后,再判断他是否符合条件(大于数组一半),因为很有可能他是数组出现次数最多,但是未必大于数组一半。 详细细节见代码注释。...如果有符合条件数字,则它出现次数比其他所有数字出现次数和还要多。...,并写入hashmap中,hashmap值是该数字出现次数,并在每次循环中判断是否该数次数大于数组一半,若有直接返回数字,否则遍历完数组返回0。

79830

数组出现次数超过一半数字

题目 数组中有一个数字出现次数超过数组长度一半,请找出这个数字。例如输入一个长度为9数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组出现了5次,超过数组长度一半,因此输出2。...思路: 首先用一个数字survivor来保存幸存者方,用一个数字count来计算幸运者幸运值 规则:如果遇到相同数字代表相同阵营,count++; 如果遇到不同数字,则幸存者count--; 如果...注意如果存在超过一般数字,那么这个数字肯定是幸存者,但是幸存者不一定是个数超过一般那个.比如12213,幸存者是3,但是3个数没有超过一半.因此我们在得到幸存者后要进行验证 为什么说如果存在超过一半数字...因为如果极端说,若其个数超过一半了,那么就算间隔着如12131514161,其他数字全由1出力干掉不用其他数字帮忙,最后也可以幸存1个 代码: public int MoreThanHalfNum_Solution...(int [] array) { int survivor=array[0]; int count=1; for(int i=1;i<array.length

25430

数组出现次数超过一半数字

题目:数组中有一个数字出现次数超过了数组长度一半,找出这个数字。 看到这道题,我们马上就会想到,要是这个数组是排序数组就好了。...如果是排序数组,那么我们只要遍历一次就可以统计出每个数字出现次数,这样也就能找出符合要求数字了。题目给出数组没有说是排好序,因此我们需要给它排序。...本博客系列第13题就是一个应用哈希表例子。不过本题并没有限制数组里数字范围,我们要么需要创建一个很大哈希表,要么需要设计一个很复杂方法来计算哈希值。因此总体说来这个方法还不是很好。...前 面两种思路都没有考虑到题目中数组特性:数组中有个数字出现次数超过了数组长度一半。也就是说,有个数字出现次数比其他所有数字出现次数和还要 多。...由于我们要找数字出现次数比其他所有数字出现次数之和还要多,那么要找数字肯定是最后一次把次数设为1时对应数字。

64160

数组出现次数超过一半数字

题目描述 数组中有一个数字出现次数超过数组长度一半,请找出这个数字。例如输入一个长度为9数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组出现了5次,超过数组长度一半,因此输出2。...解题思路 三种解法: 法1:借助hashmap存储数组中每个数出现次数,最后看是否有数字出现次数超过数组长度一半; 法2:排序。...数组排序后,如果某个数字出现次数超过数组长度一半,则一定会数组中间位置。...所以我们取出排序后中间位置数,统计一下它出现次数是否大于数组长度一半; 法3:某个数字出现次数大于数组长度一半,意思就是它出现次数比其他所有数字出现次数和还要多。...因此我们可以在遍历数组时候记录两个值:1. 数组数字;2. 次数。遍历下一个数字时,若它与之前保存数字相同,则次数加1,否则次数减1;若次数为0,则保存下一个数字,并将次数置为1。

43520

每日一题: 数组中数字出现次数

链接: 数组中数字出现次数 ---- 该题是“消失数字”进阶版,还没接触读者可以先看这个: 链接:消失数字 ---- 思路: 我们依然使用异或方法,只不过这道题需要查找是两个数字,所以我们得先找到这两个数字异或数字...: 首先将数组nums中数字异或一遍,得到就是只出现一次数字那两个数字异或数字。...又因为该题要求要将returnSize改成只出现一次数字,这里比较简单,就是两个嘛。...所以我们想到一个方法找到这两个数字: 在 n 二进制位中从右到左,找到第一位为1位数,然后记下这个位为 j,接着把 nums 中所有数依次判断,若在 j 位为1则放到一个数组中,为0则放到另一个数组中...以这里例一为例,我们上面求出n等于0111,那么第一位为1就刚刚好是第一位,然后把nums数组中第一位为1放到一个数组,为0放到另一个数组中去。

35430

数组出现次数超过一半数字

,或者有空间限制等,尽量体现在代码中,保证读者可以不漏掉书中细节) 尽量精简话语,避免冗长解释 给出代码可运行,注释齐全,关注细节问题 题目介绍 数组中有一个数字出现次数超过数组长度一半,请找出这个数字...例如输入一个长度为9数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组出现了5次,超过数组长度一半,因此输出2。如果不存在则输出0。 解题思路 方法一 思路 该方法改变了原数组。...这是一个典型递归过程 找到这个数字后,再判断他是否符合条件(大于数组一半),因为很有可能他是数组出现次数最多,但是未必大于数组一半。 详细细节见代码注释。...如果有符合条件数字,则它出现次数比其他所有数字出现次数和还要多。...,并写入hashmap中,hashmap值是该数字出现次数,并在每次循环中判断是否该数次数大于数组一半,若有直接返回数字,否则遍历完数组返回0。

89620

算法-数字在排序数组出现次数

题目: 统计一个数字在排序数组出现次数,比如排序数组为{1,2,3,3,3,4,5},那么数字3出现次数就是3。...3.最后,我们发现在排序数组中,如果我们知道了第一个3和最后一个3出现位置,那么其实也就知道了个数,那么我们能否在第一次使用二分查找之后,继续使用二分法,找到两端3?...个人感觉,二分查找关键在于用一种规则,让每次查找之后范围都可以减半,一次来降低时间复杂度,所以改进二分查找可以很多问题中灵活使用,除了这个,在旋转数组最小数字问题中也可以用到,甚至在旋转数组最小数字中...,连二分查找前提条件都变了,不再是一个顺序数组。...在GetFirstK中,使用了递归方法,在下一次递归前,一直在调整数组范围,让下一次递归与本次递归相比,范围少了一半,这就是二分。

85950

数字在升序数组出现次数_37

看到升序数组,那一般来说二分法跑不了 那么这里我提供下我三种解法,两种二分法,一种hash存储; 1 .两次二分法分别找到第一次出现该数字和最后一次出现该数字位置 主要思路,在二分法第一次查到...k值时候判断前面或者后面是否有也等于k值,以此决定是否要前移或者后移来找到最左或者最右k值点; 代码: public class Solution { //统计一个数字在排序数组出现次数...public int GetNumberOfK(int[] array, int k) { if (array == null) { return 0...查找k-0.5和k+0.5来获取这两者之间数字个数就是k个数 因为array中都是整数,所以可以稍微变一下,不是搜索k两个位置,而是搜索k-0.5和k+0.5 这两个数应该插入位置,然后相减即可...getMidIndex(int left,int right){ return left+(right-left)/2; } 3.hash 没啥好说,就是一个普通利用hash

31710
领券