算法:请找出数组a所有重复元素和比较数组a和数组b得到不重复的新数组和比较数组a和数组b请找出所有重复元素
/** * 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; }
* 博客文章部分截图及内容来自于学习的书本及相应培训课程,仅做学习讨论之用,不做商业用途。
* 如有侵权,马上联系我,我立马删除对应链接。
* 备注:王先生
* 我的网易邮箱:wzw_1314_520@163.com
分类:
算法
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现