Leetcode刷题100天(阿里云周赛)—查找数组中的所有重复项(哈希)—day42
Posted 神的孩子都在歌唱
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode刷题100天(阿里云周赛)—查找数组中的所有重复项(哈希)—day42相关的知识,希望对你有一定的参考价值。
前言:
作者:神的孩子在歌唱
大家好,我叫运智
描述
给定一个整数数组,1 ≤ a[i] ≤ n(n = 数组的大小),一些元素出现两次,其他元素出现一次。
找到在此数组中出现两次的所有元素。
示例
样例1
输入:
[4,3,2,7,8,2,3,1]
输出:
[2,3]
样例2
输入:
[10,2,5,10,9,1,1,4,3,7]
输出:
[1,10]
这里要按照顺序输出,我使用entry被卡主le
package 阿里云周赛;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
/*
* https://tianchi.aliyun.com/oj/589132502606324130/633179267010859822
*解题思路:我一看到要统计次数我就想到要用哈希,然后他是要按照顺序输出的,这给的题解输出有问题,给我整傻了
*/
public class 查找数组中的所有重复项 {
public static List<Integer> findDuplicates(int[] nums) {
// 定义一个返回值
List<Integer> res=new ArrayList<Integer>();
// 如果长度小于2说明无法满足两次的要求,直接返回null
if (nums.length<2) {
return res;
}
// 定义哈希统计次数
HashMap<Integer, Integer> map=new HashMap<>();
for(int num:nums) {
map.put(num, map.getOrDefault(num, 0)+1);
// 每遍历一次就判断是否满足两次,如果满足还得判断是否添加过了
if (map.get(num)==2&&!res.contains(num)) {
res.add(num);
}
}
// for (Map.Entry<Integer, Integer> entry: map.entrySet()) {
// int i=entry.getValue();
// if (i==2) {
// res.add(entry.getKey());
// }
//
// }
return res;
}
public static void main(String args[]) {
int[] nums= {4,3,2,7,8,3,2,1};
List<Integer> res=findDuplicates(nums);
System.out.print(res);
}
}
本人csdn博客:https://blog.csdn.net/weixin_46654114
转载说明:跟我说明,务必注明来源,附带本人博客连接。
以上是关于Leetcode刷题100天(阿里云周赛)—查找数组中的所有重复项(哈希)—day42的主要内容,如果未能解决你的问题,请参考以下文章
Leetcode刷题100天(阿里云周赛)—查找数组中的所有重复项(哈希)—day42
Leetcode刷题100天(阿里云周赛)—查找数组中的所有重复项(哈希)—day42
Leetcode刷题100天(阿里云周赛)—在排序链表中插入一个节点(链表)—day42
Leetcode刷题100天(阿里云周赛)—在排序链表中插入一个节点(链表)—day42