写一个查找算法找出数组中相同的元素

2023-10-31

 1     import java.util.ArrayList;  
 2       
 3     public class Test {  
 4       
 5         // 原始数据data。假设data数组中的数据元素已经按照某种顺序排好。  
 6         // 但是,该数组中的数据元素重复出现。  
 7         // 我们的目的是查找、解析data数组中重复出现的某元素。  
 8         // 比如,在这个data数组中,元素'C'在数组位置2,3重复出现两次。  
 9         // 注意!有些元素没有重复出现,比如元素'B'。  
10         private String[] data = { "A", "A", "B", "C", "C", "D", "D", "D" };  
11       
12         // 存储分类好的数据元素。  
13         private ArrayList<Group> groups = new ArrayList<Group>();  
14       
15         // 核心的算法实现。  
16         public void find() {  
17       
18             // 游标index  
19             int index = 0, j = 0;  
20       
21             while (index < data.length) {  
22                 Group group = new Group();  
23                 group.title = data[index];  
24                   
25                 String t = group.title;  
26       
27                 ArrayList<String> children = new ArrayList<String>();  
28       
29                 for (j = index; j < data.length; j++) {  
30       
31                     String child = data[j];  
32                     if (t.equals(child)) {  
33                         // 同时记录该重复出现的元素在原数组中的下标j,便于查验、评估结果。  
34                         children.add(child + "@" + j);  
35                     } else {  
36                         break;  
37                     }  
38                 }  
39       
40                 // 往后推进游标index  
41                 index = j;  
42       
43                 group.children = children;  
44                 groups.add(group);  
45             }  
46         }  
47       
48         // 输出结果。  
49         private void print() {  
50             for (int i = 0; i < groups.size(); i++) {  
51                 Group g = groups.get(i);  
52                 System.out.println(g);  
53             }  
54         }  
55       
56         // 自己构造一个类,作为一组数据的容器。  
57         // 该类用一个title表明这一group数据是归属于那个重复元素的组。  
58         // 该title下重复的元素装入到ArrayList<String> children中,供遍历查询。  
59         private class Group {  
60             public String title;  
61             public ArrayList<String> children;  
62       
63             // 结果。  
64             @Override  
65             public String toString() {  
66                 String str = "组" + title + ": ";  
67                 for (int i = 0; i < children.size(); i++) {  
68                     str += children.get(i) + " ";  
69                 }  
70       
71                 return str;  
72             }  
73         }  
74       
75         public static void main(String args[]) {  
76             Test t = new Test();  
77             t.find();  
78             t.print();  
79         }  
80     }  

 

转载于:https://www.cnblogs.com/yoyohong/p/5762667.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

写一个查找算法找出数组中相同的元素 的相关文章

  • 检查lua中是否存在目录?

    如何检查 lua 中是否存在目录 如果可能的话最好不使用 LuaFileSystem 模块 尝试做类似以下 python 行的事情 os path isdir path 这是一种在 Unix 和 Windows 上都适用的方式 无需任何外部
  • 什么时候适合使用Lua这样的嵌入式脚本语言

    我玩 魔兽世界 大约有两年了 我对用来编写插件的 Lua 很好奇 由于到目前为止我读到的有关 Lua 的内容都是 快 轻 和 这太棒了 所以我想知道如何以及何时使用它 您需要在系统中嵌入像 Lua 这样的脚本语言的典型情况是什么 当您需要最
  • Kong - 验证上游 ssl(ssl_proxy 打开)

    我已经成功为 API 安装了 kong 网关 该 API 通过上游负载平衡到多个目标 应用程序服务器 现在 我有一个我的应用程序服务器的自签名证书 kong 和目标之间的 ssl 握手应该失败 我推断 kong 不验证上游证书 经过一些研究
  • Lua userdata:无法同时进行数组访问和方法

    我遇到了这个人的问题 Lua userdata数组访问及方法 https stackoverflow com questions 26970316 lua userdata array access and methods 其中 当我设置用
  • Lua中如何获取表中的最大整数?

    Lua中如何获取表中的最大整数 在Lua 5 1及更早版本中 你可以使用 math max unpack 1 2 3 4 5 这受到Lua堆栈大小的限制 在 PUC Lua 5 1 上 该值的最大值可达 ca 8000 个数字 如果堆栈空闲
  • 为什么 LuaJIT 这么好?

    编辑 不幸的是 LuaJIT 已从下面链接的比较中删除 This 比较 http shootout alioth debian org u64 which programming languages are fastest php编程语言的
  • lua中的权限问题

    是否需要在 corona build settings 中设置一些特定权限才能将高分永久保存在文件中 每次运行代码时都会出现 权限被拒绝 的错误 如何纠正这个错误 这是我尝试过的代码 function read score local f1
  • 在Lua中获取前一天的日期

    谁能告诉我如何使用 Lua 获取 YYYY MM DD 格式的前一天日期 即 一个片段 它将返回运行当天的前一天的日期 Try print os date Y m d os time 24 60 60 严格来说 这只能保证在 POSIX 系
  • Lua中按字符分割字符串

    我有像这样的字符串 ABC DEF 我需要将它们分开 字符并将两个部分分别分配给一个变量 在 Ruby 中 我会这样做 a b ABC DEF split 显然Lua没有这么简单的方法 经过一番挖掘后 我找不到一种简短的方法来实现我所追求的
  • 检查多个位置的值并仅在源唯一时返回匹配项

    假设我有一个清单Vendors 阿斯达 乐购 Spar 我有一个清单Sources 或者这个类比中的供应商 家乐氏 Kellogg 吉百利 Cadbury 雀巢 Nestle 强生 Johnsons 帮宝适 Pampers Simple 等
  • 比较 Lua 中的日期

    我有一个带有日期表的变量 如下所示 table day number 15 year number 2015 month number 2 如何获取当前日期与上述日期之间的天数 非常感谢 您可以使用os time 将表转换为秒并获取当前时间
  • Lua 上的 For 循环

    我的作业是如何执行 for 循环 我已经从数字上弄清楚了 但无法从名称上弄清楚 我想创建一个 for 循环来运行名称列表 以下是我到目前为止所拥有的 names John Joe Steve for names 1 3 do print n
  • SHA2 512 的改编给出了不正确的结果

    我正在尝试调整 SecureHashAlgorithm 的纯 Lua 实现here http lua users org wiki SecureHashAlgorithm对于 SHA2 512 而不是 SHA2 256 当我尝试使用改编时
  • 如何在 Lua - Lightroom 插件中使用 HMAC

    首先我要提的是我对 Lua 真的很陌生 如果你认为我的问题太愚蠢 请耐心等待 这是我的要求 我需要使用 HMAC sha256 进行 Lightroom 插件开发 因为我使用它是为了安全 我试图使用这个但没有运气https code goo
  • 云到设备 Azure IoT REST API

    我探索了如何使用 Azure REST API 将数据从设备发送到云 它运行无缝 没有任何问题 我没有找到有关使用 Azure IoT Hub REST API 向 Arduino 板发送云到设备消息的好文章 有人可以就此提供建议吗 您还可
  • Lua 中的贪婪/非贪婪模式匹配和可选后缀

    在 Lua 中 我正在尝试模式匹配和捕获 384 Critical Strike Reforged from Parry Chance as 384 Critical Strike 后缀在哪里 Reforged from s 是可选的 长版
  • 将值存储在 lua 的 userdata 对象中

    我想做的是这样的 object foo bar print object foo 其中 对象 是用户数据 我已经用谷歌搜索了一段时间 使用关键字 newindex 和 lua rawset 但我找不到任何可以实现我想要的功能的示例 我想用
  • Linq 是如何工作的(在幕后)?

    我正在考虑为 Lua 制作类似 Linq 的东西 并且我大致了解 Linq 的工作原理 但想知道是否有一篇好文章 或者是否有人可以解释 C 如何使 Linq 成为可能 注意 我的意思是在幕后 比如它如何生成代码绑定等等 而不是最终用户语法
  • lua-socket:unix 域套接字?

    我使用的是 lua socket 3 0rc1 3 Ubuntu Trusty 附带的 和 lua 5 1 我正在尝试监听 unix 域套接字 我能找到的唯一示例代码是this http lua users org lists lua l
  • 如何将 Lua 粘合到 C++ 代码?

    您使用 Luabind toLua 或其他库 如果使用 是哪一个 还是根本不使用 每种方法都有哪些优点和缺点 我不太同意 自己投票 将基本类型和静态 C 函数绑定到 Lua 是微不足道的 是的 但是当你开始处理表和元表时 情况就会发生变化

随机推荐

  • 近期 AI 领域,招聘招生信息汇总

    关注公众号 获取更多AI领域发展机会 本文汇总近期招聘信息 有全职也有实习还有升学机会 有需要的朋友欢迎点击查看详情 投递简历 1 海内外招聘 实习生岗位 同方威视南京研发中心招聘图像算法工程师 北上深 商汤招聘智能视频和数字人算法研究员
  • 初识C语言:一篇文章解决基础的操作符(前置++与后置++的区别)

    目录 一 算术操作符 二 关系操作符 三 赋值操作符 四 自增 自减操作符 前言 总结 前言 1 加法运算符 加法运算符为双目运算符 即应有两个量参与加法运算 右结合性 2 减法运算符 减法运算符为双目运算符 但 也可作负值运算符 此时为单
  • ARM寻址方式

    所谓寻址方式就是处理器根据指令中给出的地址信息来寻找物理地址的方式 ARM处理器的寻址方式 目前ARM处理器支持9种寻址方式 分别是立即数寻址 寄存器寻址 寄存器偏移寻址 寄存器间接寻址 基址变址寻址 多寄存器寻址 相对寻址 堆栈寻址和块拷
  • 自定义规则 Collections.sort() 对 List 排序

    一 Collections sort 与Arrays sort 的比较 Collections sort 该算法是一个经过修改的合并排序算法 其中 如果低子列表中的最高元素效益高子列表中的最低元素 则忽略合并 此算法可提供保证的N log
  • 工作日记NO.12

    后续工作内容 1 尝试编译WINDOWS工程 2 尝试编译LINUX工程 3 根据LINUX工程尝试编译 编写 emscripten工程 今日完成 1 makefile规则 2 libdwg的makefile in makefile am研
  • 一些常用的第三方框架之Fresco下篇

    Fresco的使用 1 gitHub下载依赖库或者jar包 Anroid Studio可以通过compile方式加载 compile com facebook fresco fresco 0 8 1 2 添加网络权限 uses permis
  • spring cloud(四) Eureka配置Httpbasic验证+Eureka配置详解

    目录 spring cloud 一 从一个简单的springboot服务开始 spring cloud 二 起步 集成Eureka服务发现 spring cloud 三 Eureka高可用性 Feign声明式Rest客户端 spring c
  • C# 线程浅谈(三)

    这篇讲线程锁 lock得概念 什么是锁 为什么用锁 做个栗子 俩个线程同时访问一个int对象 一个线程 一个线程 都1W次 那么这个数 不管怎么样 最后都是0 class TaskDom int count 0 public void St
  • 为什么64位计算机CPU架构叫amd64

    x86 1978 年 6 月 Intel 发布了新款 16 位微处理器 8086 开创了一个全新时代 x86 架构由此诞生 x86 架构指的是特定微处理器执行的计算机语言指令集 定义了芯片的基本使用规则 事实上 8086 处理器发布之初并没
  • OpenCV学习日志_2020.10.26_面向Python的OpenCV入门

    日期 2020 10 26 主题 面向Python的OpenCV入门 内容 在Anaconda上安装配置OpenCV 学习图像处理基本操作 以下为具体代码 import cv2 1 读取静态图像 retval cv2 imread file
  • Dell服务器中Lsiutil命令常见使用

    前言 Dell服务器MegaCli命令只返回Exit Code 0x00问题分析 SAS 6i R的raid信息用MegaCli64命令就获取不到呢 SAS 6 iR 只支持2块硬盘做raid0或者raid1 现在返回去看看MegaCli6
  • NLP(五)命名实体识别(NER)

    本文将会简单介绍自然语言处理 NLP 中的命名实体识别 NER 一 什么是命名实体识别 1 命名实体识别简介 命名实体识别 Named Entity Recognition 简称NER 是信息提取 问答系统 句法分析 机器翻译等应用领域的重
  • 征稿

    我们诚挚地邀请您提交论文参加 ACM MM23 会议上 LGM3A Workshop 主题为 基于大语言模型的多模态研究和应用 LGM3A 2023 the 1st Workshop on Large Generative Models M
  • 可直接使用的unity第三人称自由视角相机脚本

    使用方法 将要控制的角色拖到TargetBody 将相机的焦点拖到CamerPivot 建议CameraPivot是一个放在TargetBody下的子物体 并且位置应该是在TargetBody的头部 注意 此脚本自动忽略 Ignore Ra
  • 准确率、精确率、召回率、F1值学习笔记

    一 TN TP TN FP FN概念 TP与TN都是分对了情况 TP是正类 TN是负类 则推断出 FP是错误的正类 FN是错误的负类 举例 我们需要从一个班级中的人中寻找所有女生 如果把这个任务当成一个分类器的话 那么女生就是我们需要的 而
  • OpenSSL EVP_EncryptInit 函数官方详解

    OpenSSL EVP EncryptInit 函数官方详解 https www openssl org docs manmaster crypto EVP EncryptInit html
  • 新星计划、原力计划新动态,大波的奖牌来袭速来领取

    catalogue 写在前面 原力计划 新星计划 大波奖牌来袭 微软学生开发者峰会 写在最后 写在前面 哈喽 大家好 我是几何心凉 这是一份全新的专栏 得到CSDN王总的授权 来对于我们每周四的绿萝时间 直达CSDN 直播内容进行总结概括
  • 抓住推特群推营销红利,实现低成本精准获客

    随着Twitter在社媒营销中所占流量越来越高 现在做推特引流不会群发 都不敢说自己会玩 使用大量的账号 全天24小时自动发推 抢占搜索热门 进行推特营销时 通过推特群发可以让你的信息快速传播 从而提高你的品牌知名度和推广效果 以下是进行推
  • 单片机论文参考:3、基于单片机的电子万年历设计

    摘要 随着社会 科技的发展 人类得知时间 从观太阳 摆钟到现在电子钟 不断研究 创新 为了在观测时间 能够了解与人类密切相关的信息 比如星期 日期等 电子时钟诞生了 它集时间 日期 星期等功能于一身 具有读取方便 显示直观 功能多样 电路简
  • 写一个查找算法找出数组中相同的元素

    1 import java util ArrayList 2 3 public class Test 4 5 原始数据data 假设data数组中的数据元素已经按照某种顺序排好 6 但是 该数组中的数据元素重复出现 7 我们的目的是查找 解