查找 int 数组中的第一个重复项,java

2024-02-21

这是我遇到的一个常见面试问题,但我未能按照其要求的方式改进它。

assume we have an int array int[] A, we want to find the first duplicate entry. 
  1. 几乎每个人都会想到使用HashSet,并在解析时向它添加。这将导致O(n)时间和O(n)空间。之后我被要求在没有其他数据结构的情况下解决它。我说过最愚蠢的想法是在 O(n^2) 时间内比较每一个。然后我被要求改进 O(n^2) 时间。

  2. 为了改进它,我想到使用固定大小的数组(假设最大数量为n),boolean[] b = new boolean[n];但是我不被允许使用这种方法。

  3. 然后我想到了使用int变量,使用位操作,如果最大数小于32,那么对于n我们可以将1向左推入n位并且|到检查器,然后检查器到数组中的下一个条目以检查它是否 > 0。 例如。:

    int c = A[i];
    if(check & (1 << c) > 0) return false;
    check |= 1 << c;
    

但这也是不允许的。

所以有一个提示,我可以使用数组本身作为哈希集/哈希表,以及“线性哈希”?

有什么帮助吗?谢谢


线性散列为由维基百科定义 http://en.wikipedia.org/wiki/Linear_hashing其优点是调整大小是增量进行的,因为存储桶以循环方式逐一分割,从而为调整大小的插入保留恒定的摊销时间复杂度。因此,他们的想法是迭代数组,重新使用已经迭代的元素作为线性散列的存储。

虽然我远不是线性哈希方面的专家,但我没有看到任何方法可以将哈希表放入数组中。当然,要使用线性散列存储 n 个元素,您可能需要使用 n 个存储桶。然而,存储桶中的元素数量是无限的,您需要类似链表的东西来实现每个存储桶,这会额外花费 O(n) 的指针内存。

因此,该算法不会产生比普通算法更好的渐近空间复杂度HashSet。不过,它确实以恒定的因子减少了内存消耗。

其时间复杂度与普通的相当HashSet.

编辑:在我看来,这个答案被忽略了(没有投票,没有评论)。是不是没啥用?请发表评论,以便我知道需要改进的地方。

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

查找 int 数组中的第一个重复项,java 的相关文章

  • 日期语句之间的 JPQL SELECT [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我想将此 SQL 语句转换为等效的 JPQL SELECT FROM events WHERE events date BETWE
  • Spring应用中Eureka健康检查的问题

    我正在开发一个基于 Spring 的应用程序 其中包含多个微服务 我的一个微服务充当尤里卡服务器 到目前为止一切正常 在我所有其他微服务中 用 EnableEurekaClient 我想启用这样的健康检查 应用程序 yml eureka c
  • Junit:如何测试从属性文件读取属性的方法

    嗨 我有课ReadProperty其中有一个方法ReadPropertyFile返回类型的Myclass从属性文件读取参数值并返回Myclass目的 我需要帮助来测试ReadPropertyFile方法与JUnit 如果可能的话使用模拟文件
  • 在内存中使用 byte[] 创建 zip 文件。 Zip 文件总是损坏

    我创建的 zip 文件有问题 我正在使用 Java 7 我尝试从字节数组创建一个 zip 文件 其中包含两个或多个 Excel 文件 应用程序始终完成 没有任何异常 所以 我以为一切都好 当我尝试打开 zip 文件后 Windows 7 出
  • .properties 中的通配符

    是否存在任何方法 我可以将通配符添加到属性文件中 并且具有所有含义 例如a b c d lalalala 或为所有以结尾的内容设置一个正则表达式a b c anything 普通的 Java 属性文件无法处理这个问题 不 请记住 它实际上是
  • 为 java 游戏创建交互式 GUI

    大家好 我正在创建一个类似于 java 中的 farmville 的游戏 我只是想知道如何实现用户通常单击以与游戏客户端交互的交互式对象 按钮 我不想使用 swing 库 通用 Windows 看起来像对象 我想为我的按钮导入自定义图像 并
  • 如何使用assertEquals 和 Epsilon 在 JUnit 中断言两个双精度数?

    不推荐使用双打的assertEquals 我发现应该使用带有Epsilon的形式 这是因为双打不可能100 严格 但无论如何我需要比较两个双打 预期结果和实际结果 但我不知道该怎么做 目前我的测试如下 Test public void te
  • 如何在java中将一个数组列表替换为另一个不同大小的数组列表

    我有两个大小不同的数组列表 如何从此替换 ArrayList
  • Pig Udf 显示结果

    我是 Pig 的新手 我用 Java 编写了一个 udf 并且包含了一个 System out println 其中的声明 我必须知道在 Pig 中运行时该语句在哪里打印 假设你的UDF 扩展了 EvalFunc 您可以使用从返回的 Log
  • 在 Jar 文件中运行 ANT build.xml 文件

    我需要使用存储在 jar 文件中的 build xml 文件运行 ANT 构建 该 jar 文件在类路径中可用 是否可以在不分解 jar 文件并将 build xml 保存到本地目录的情况下做到这一点 如果是的话我该怎么办呢 Update
  • 如何更改javaFX中按钮的图像?

    我正在使用javaFX 我制作了一个按钮并为此设置了图像 代码是 Image playI new Image file c Users Farhad Desktop icons play2 jpg ImageView iv1 new Ima
  • 没有 Spring 的自定义 Prometheus 指标

    我需要为 Web 应用程序提供自定义指标 问题是我不能使用 Spring 但我必须使用 jax rs 端点 要求非常简单 想象一下 您有一个包含键值对的映射 其中键是指标名称 值是一个简单的整数 它是一个计数器 代码会是这样的 public
  • 像 Java 这样的静态类型语言中动态方法解析背后的原因是什么

    我对 Java 中引用变量的动态 静态类型和动态方法解析的概念有点困惑 考虑 public class Types Override public boolean equals Object obj System out println i
  • 在我的 Spring Boot 示例中无法打开版本 3 中的 Swagger UI

    我在 Spring Boot 示例中打开 swagger ui 时遇到问题 当我访问 localhost 8080 swagger ui 或 localhost 8080 root api name swagger ui 时出现这种错误 S
  • Cucumber 0.4.3 (cuke4duke) 与 java + maven gem 问题

    我最近开始为 Cucumber 安装一个示例项目 并尝试使用 maven java 运行它 我遵循了这个指南 http www goodercode com wp using cucumber tests with maven and ja
  • 最新的 Hibernate 和 Derby:无法建立 JDBC 连接

    我正在尝试创建一个使用 Hibernate 连接到 Derby 数据库的准系统项目 我正在使用 Hibernate 和 Derby 的最新版本 但我得到的是通用的Unable to make JDBC Connection error 这是
  • 找到一个数字所属的一组范围

    我有一个 200k 行的数字范围列表 例如开始位置 停止位置 该列表包括除了非重叠的重叠之外的所有类型的重叠 列表看起来像这样 3 5 10 30 15 25 5 15 25 35 我需要找到给定数字所属的范围 并对 100k 个数字重复该
  • Opencv Java 灰度

    我编写了以下程序 尝试从彩色转换为灰度 Mat newImage Imgcodecs imread q1 jpg Mat image new Mat new Size newImage cols newImage rows CvType C
  • CamcorderProfile.videoCodec 返回错误值

    根据docs https developer android com reference android media CamcorderProfile html 您可以使用CamcorderProfile获取设备默认视频编解码格式 然后将其
  • 从列表中选择项目以求和

    我有一个包含数值的项目列表 我需要使用这些项目求和 我需要你的帮助来构建这样的算法 下面是一个用 C 编写的示例 描述了我的问题 int sum 21 List

随机推荐

  • 测试重定向 CakePHP 2.0

    我一直在看食谱上的一些例子 但我不明白 http book cakephp org 2 0 en development testing html a more complex example http book cakephp org 2
  • flutter-desktop-embedding 如何构建 exe 文件

    in 颤动桌面嵌入 https github com google flutter desktop embedding 我是windows环境 可以运行 但是不知道如何构建exe文件 我想知道该怎么办 If you flutter buil
  • 对 JSONP 请求的工作原理感到困惑

    我无法理解 jsonp 请求如何工作的细节 我已经阅读了包括 jsonp 上的 wiki 在内的多个资料来源 但对于在进行 jsonp 调用时回调实际上如何获取从服务器返回的函数仍然非常困惑 例如 在wiki中 请求的来源设置为 src h
  • 在不使用 GIT 的情况下将 WAR 文件部署到 Openshift?

    我想将 WAR 文件上传到我的开放式换档帐户 但这迫使我 使用 GIT 或 GITHUB here https www openshift com kb kb e1088 how to deploy pre compiled java ap
  • 从服务器获取数据时 Android 中的列表视图

    我正在尝试将数据异步填充到列表视图中 我正在从服务器检索数据作为 JSON 响应 MainActivity java public class MainActivity extends Activity url to make reques
  • Availability.h 类宏

    是否可以有一个自定义可用性宏 例如 OSX AVAILABLE STARTING 我需要它以同样的方式执行 我只需要更改它的名称以及参数的版本和数量 是的 当然了 Objective C 是 C 的严格超集 因此 C 宏非常适合您使用 并且
  • 如何预测 merMod 对象(lme4)的术语?

    对于简单的glm对象 我可以使用predict fit type terms 检索包含每个项的拟合值的矩阵 相当于什么lmer resp glmer适配型号 据我所知 predict merMod功能不支持type terms 相当于什么l
  • 如何为 Outlook 创建“Internet 日历订阅”?

    目前 用户添加了一个 新的互联网日历 但它是 ICS 文件的一次性下载 我希望用户单击一个按钮即可将其个人日历添加为 Outlook 订阅 我想要自动更新 互联网日历订阅 http office microsoft com en us ou
  • VBA-获取所有文件属性

    我想获取文件夹中所有文件的属性 我已经将其用于固定数量的属性 我唯一关心的是找到最后一个属性的索引 用于GetDetailsOf方法 以便我可以列出所有属性 下面的函数返回属性计数 但不正确 因为它基于最后一个非空属性名称 然而 有一些索引
  • TinyMCE 编辑器中的换行符在预览中显示额外的行,而不是在代码中

    我将 BBCode 插件与 TinyMCE 结合使用 发现预览和 HTML 代码之间的换行符显示不一样 我在编辑器窗口中有以下几行 This is line one This is line three 第二行是空的 当我在 HTML 中查
  • Flutter Web 调试正常,但构建 Web 显示空白页面

    flutter doctor result Flutter Channel dev 1 21 0 1 0 pre on Microsoft Windows Version 10 0 19041 388 locale en US Androi
  • APK Openssl 版本

    我很困惑 我最近创建了 Google Play 应用程序 但几个小时后 我在控制台中收到消息 指出我使用了错误的 OpenSSL 版本 解压缩 p YourApp apk 字符串 grep OpenSSL gives OpenSSL 1 0
  • 如何使用 cygwin 排序对第 n 列上的制表符分隔文件进行排序?

    我有一个巨大的制表符分隔文件 我想在其第二列上进行排序 我需要使用制表符作为 cygwin 排序中的字段分隔符 所以我需要这样的东西 sort t t k 2 2 in txt gt out txt 但命令提示符按字面意思计算 t 而不是作
  • Storm 和 Spring 4 集成

    我有一个 Storm 应用程序原型 它读取 STOMP 流并将输出存储在 HBase 上 它可以工作 但不是很灵活 我正在尝试以与我们其他应用程序更一致的方式设置它 但不太幸运地弄清楚当前与 Storm 的工作方式 我们使用 spring
  • 如何在 Forth 中比较两个字符串?

    我可以在if声明还是我应该创建一个辅助布尔变量 这是我到目前为止的代码 顺便一提 IOX 是从用户那里获取输入 var compile VARIABLE complile lock compile var realPass compile
  • 如何更改ggplot2中图例文本的大小?

    我使用下面的数据和代码得到了这个图 我希望能够更改图例文本的大小 A B M1 M3 我尝试使用 legend text element text size 0 5 但它没有改变 有什么建议如何减小 legend text 的大小吗 Cod
  • 解决“只能在类中初始化静态常量整型数据成员”编译错误

    以下创建全局对象会导致编译错误 include stdafx h include
  • 混合单独编译的对象

    让我来上课吧class Drawable 它可以有许多成员 成员函数 父类 也可以非常简单 对于这个例子来说 这并不重要 另外 假设它是某种 GUI 元素 然后 假设我有一个渲染引擎 它作为 GCC 库提供engine a 该库包含clas
  • Laravel 5.0.* 中间件在处理路由之前从 url 中删除前缀区域设置

    我正在寻找一种方法 使所有应用程序路由都具有多个区域设置 而不使用路由组 这是因为我使用了外部扩展包 这意味着路由在很多地方注册 本质上我想让 foo bar 以及 en foo bar de foo bar es foo bar 等都被
  • 查找 int 数组中的第一个重复项,java

    这是我遇到的一个常见面试问题 但我未能按照其要求的方式改进它 assume we have an int array int A we want to find the first duplicate entry 几乎每个人都会想到使用Ha