如何使用 Java 8 流 API 以 O(N) 时间和 O(C) 空间复杂度从列表中仅删除一个最大值(最小值)

2024-03-19

以下代码用于从列表中仅删除一个最大值(在本例中为第一个值,但这无关紧要)。这是O(n)及时和O(n)在空间中(超出输入)。

public List<Integer> removeOneOfTheMax(List<Integer> nums) {
    int max = Integer.MIN_VALUE;
    int maxIndex = -1;
    Iterator<Integer> it = nums.iterator();
    for (int i = 0; it.hasNext(); i++) {
        Integer temp = it.next();
        if (max < temp) {
            maxIndex = i;
            max = temp;
        }

    }
    nums.remove(maxIndex);
    return nums;
}

1.使用 Java 8 流 API 的方法的等效项是什么?我想保留时间和空间复杂性,因此不允许排序。

2.事实上,如果你通过了LinkedList到上面的代码中,空间复杂度将是O(C)(再次,超出输入范围),但据我了解.stream()创建一个额外的数据结构,因此流 API 等效项必须至少是O(N)在太空。如果我错了请纠正我。


流解决方案could看起来像这样:

int maxIndex = IntStream.range(1, nums.size()).reduce(0, (i, j) -> {
    int left = nums.get(i);
    int right = nums.get(j);
    return Integer.max(left, right) == left ? i : j;
});

nums.remove(maxIndex);

下面将会有一个Spliterator.

流操作本身不会创建额外的数据结构。

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

如何使用 Java 8 流 API 以 O(N) 时间和 O(C) 空间复杂度从列表中仅删除一个最大值(最小值) 的相关文章

  • 我可以在 Java 枚举上使用构建器模式吗

    我正在重写一些代码 并且我已经决定了重新创建类的方法 因为有固定数量的工作表 我将它们创建为枚举 这是基于构建器模式与伸缩构造器的可读性的决定 我的代码获取一些 xls 文件 添加标题 并从其他 xls 文件中读取一些 也许还有一些子表 然
  • string.split("(?!^)") 解释

    我正在尝试将字符串的字符拆分为字符串数组 我找到了解决方案here https stackoverflow com questions 5235401 split string into array of character strings
  • 创建通用数组时出错

    public class TwoBridge implements Piece private HashSet
  • 使用起始字符串和结束字符串从长字符串中提取子字符串?

    我有这个长字符串 它是一个长的连续字符串 Home address H NO 12 SECTOR 12 GAUTAM BUDH NAGAR NOIDA 121212 UTTAR PRADESH INDIA 911112121212 Last
  • Java:等于和==

    让我们看看我们有 2 个对用户定义类实例的引用 即 Java 中的 a 和 b 会不会有一种情况 a b 但 a equals b 返回 false 当然 实施 equals 完全取决于班级 所以我可以写 class Foo public
  • 在 Spring Webflux 中执行阻塞 JDBC 调用

    我使用 Spring Webflux 和 Spring data jpa 使用 PostgreSql 作为后端数据库 我不想在进行数据库调用时阻塞主线程 例如find and save 为了实现同样的目标 我有一个主调度程序Controll
  • JSF-2 应用程序中的服务器端计时器

    在我正在开发的 JSF 2 应用程序中 当用户执行操作时 我需要启动服务器端计时器 这个计时器必须与应用程序本身相关 因此它必须在用户会话关闭时继续存在 为了解决这个问题 我想使用 java util Timer 类在应用程序范围的 bea
  • Android Studio:如果设置项目的背景颜色,ListView OnClick 动画将不起作用

    在我的项目中 我在 ListView 内设置了项目 由插入 ConstraintLayout 中的多个元素组成 的背景颜色 但如果背景颜色不是至少一点透明 则单击和长按的默认动画会消失 事实上 随着透明度的降低 点击元素的效果越来越不明显
  • 选择一个单元格内的最小值或最大值(分隔字符串)

    我有一个数据框 其中每个样本的列可以有多个值 例如 Gene Pvalue1 Pvalue2 Pvalue3 Beta Ace 0 0381 0 00357 0 01755 0 001385 0 0037 NA 0 039 0 03 1 1
  • grails 中的 log4j:如何登录文件?

    我的 grails config groovy 中有这个 log4j 配置 log4j error org codehaus groovy grails web servlet controllers org codehaus groovy
  • Mockito mockStatic 无法解析符号

    我正在使用 Spring Boot 并在单元测试中 我试图模拟Files delete myFile toPath method 为此 我尝试使用Mockito mockStatic 方法 但是当我尝试使用它时 我的 IDE Intelli
  • Spark SQL 失败,因为“常量池已超过 JVM 限制 0xFFFF”

    我在 EMR 4 6 0 Spark 1 6 1 上运行此代码 val sqlContext SQLContext getOrCreate sc val inputRDD sqlContext read json input try inp
  • 如何组合 3 个或更多 CompletionStages?

    如果有 2 个 CompletionStages 我可以将它们与thenCombine method CompletionStage a aCompletionStage getA CompletionStage b bCompletion
  • SwingUtilities.invokeLater

    我的问题与SwingUtilities invokeLater 我应该什么时候使用它 每次需要更新 GUI 组件时都必须使用吗 它到底有什么作用 是否有替代方案 因为它听起来不直观并且添加了看似不必要的代码 Do I have to use
  • 从侦听器中修改 JFrame [重复]

    这个问题在这里已经有答案了 可能的重复 如何在框架可见后调用 setUndecorated https stackoverflow com questions 875132 how to call setundecorated after
  • Tomcat下的Spring CXF Soap Web服务:找不到服务

    我正在尝试使用 CXF 和 Spring 设置一个在 Tomcat 上运行的简单 CXF Web 服务 我有一个 Web 应用程序初始化程序来引导 CXF servlet public class WebAppInitializer ext
  • 可空日期列合并问题

    我在 Geronimo 应用程序服务器上使用 JPA 和下面的 openjpa 实现 我也在使用MySQL数据库 我在更新具有可为空 Date 属性的对象时遇到问题 当我尝试合并 Date 属性设置为 null 的实体时 不会生成 sql
  • Zookeeper 未启动,nohup 错误

    我已经下载了zookeeper 3 4 5 tar gz 解压后我将conf zoo cfg写为 tickTime 2000 dataDir var zookeeper clientPort 2181 现在我尝试通过 bin zkServe
  • java - 简单计算在多线程中比在单线程中花费更长的时间

    我试图了解如何利用多线程 我写了一个简单的程序来增加i 比方说 使用两种方式 400 000 次 单线程方式 0 到 400 000 和多线程方式 在我的例子中 4 次 0 到 100 000 线程数等于Runtime getRuntime
  • Bipush 在 JVM 中如何工作?

    我知道 iload 接受整数 1 到 5 但是如何使用 bipush 指令扩展到更高的数字 特定整数如何与字节码一起存储 有几种不同的指令可用于推送整数常量 最小的是iconst 指令 这些只是一个字节 因为该值是在操作码本身中编码的 ic

随机推荐

  • 简单存储过程问题

    我正在 VS 2010 SQL Server 2008 中创建一个简单的存储过程 如下所示 CREATE PROCEDURE ReturnPrice carID int price decimal 18 2 output AS SELECT
  • Haskell 平面图

    我是一个对 Haskell 感兴趣的初学者 我一直在尝试自己实现 flatmap gt gt 以更好地理解它 目前我有 flatmap t gt a gt t gt a flatmap flatmap f x xs f x flatmap
  • 如何强制右对齐 UITextView 中的尾随空格?

    我有一个 UITextView 可以左对齐 右对齐或居中 我注意到 如果我右对齐 textView 则 textView 中任何文本行中的任何尾随空格都会被忽略 左对齐时 前导空格不会发生这种情况 从视觉上看 这就是发生的情况 用 来可视化
  • 规范化数组方法和返回值

    是否有任何 JavaScript 数组库可以规范化数组返回值和突变 我认为 JavaScript Array API 非常不一致 有些方法会改变数组 var A 0 1 2 A splice 0 1 reduces A and return
  • 如何检查 Objective-C 中的类?

    Update我修复了代码 以消除重写方法的重复 并通过实现来跟踪属性或方法的发起者Mark https stackoverflow com questions 1890480 how do i inspect a class in obje
  • 定制 Linux GUI:从哪里开始? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我长期以来一直对开发适合我的需求和兴趣的操作系统用户界面感兴趣 当我年轻的时候 我疯狂地使用 Windows 的 Stardock 换
  • 我们什么时候应该实现 Serialized 接口?

    public class Contact implements Serializable private String name private String email public String getName return name
  • 从网页中删除所有 HTML 标签

    我正在做一些 BASH shell 脚本curl 如果我的curl 命令返回任何文本 我就知道有错误 此文本返回者curl通常是 HTML 格式 我想如果我可以去掉所有 HTML 标签 我就可以将生成的文本显示为错误消息 我在想这样的事情
  • NPM 卸载包不起作用

    有人可以帮助我确定卸载 npm 软件包时我的 cli 代码有什么问题吗 当我运行此 cli 代码 如下图所示 时 npm 不会卸载软件包 而是将其添加到我的 node modules 中 我希望这个社区中的某个人可以解决我的问题 并为我带来
  • libgmp-10.dll 丢失

    我最近在我的 64 位 Windows 7 计算机上安装了 MinGW 当我尝试编译最基本的 C 程序时 例如 include
  • 使用 MSBuild 时不会构建私有访问器

    我的构建服务器使用 MSBuild 来构建我的应用程序 我们的单元测试需要访问一些私有成员进行测试 因此我们使用内置的私有访问器 Visual Studio 没有问题 但是当我们将代码推送到构建服务器时 我们收到错误 MyTest cs 9
  • 从数组中删除非唯一行

    我有一个数组a如下 a 1 2 3 4 1 2 我想删除在中多次出现的所有行a并得到c c 3 4 请注意 这与保留唯一行不同 因为我根本不希望出现重复行 我怎样才能做到这一点 第三个输出为unique https www mathwork
  • 重新编译CHM文件

    我正在编写一个脚本 该脚本应该能够向 chm file 反编译后使用hh exe decompile outputFolder fileName chm命令 我得到 html 文件和其他 2 个文件 hhc and hhk扩大 编辑 htm
  • Android -fragmentTransaction.replace() 不适用于支持库 25.1.0

    我使用片段替换 FrameLayoutfragmentTransaction replace Layout
  • SQL Server 表与索引的同义词

    我在 SQL Server 2005 的单个实例上有多个数据库 我在一个数据库上创建了一个同义词来访问另一个数据库上的表 并且在编写查询时 我想使用特定的索引 但是 在评估执行计划 它似乎没有使用它 如果我编写查询来显式访问数据库 它可以工
  • Flask-login:如果login_manager的session_protection设置为“strong”,请记住我不工作

    我正在使用 Flask login 将会话管理集成到我的 Flask 应用程序中 但是如果我设置了 记住我 功能就不起作用会话保护 to strong 但是 如果设置为 它绝对可以正常工作basic 用户加载器 login manager
  • 我可以在 cpp 中使用带有向量的嵌套循环吗?

    我有一个 cpp 问题 我不知道出了什么问题 也许你可以帮助我 我正在尝试实现图表的数据结构 在此图中 我将连接一些具有较小欧氏距离的节点 但在第二次迭代时 我的迭代器将指向 0x0 仅当我将这两个节点的距离给出到 std cout 时 才
  • dotnetopenid 教程 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 非常基本的问题 但是有人可以给我指点有关如何实现和使用 dotnet openid 的建设性教程吗 我正在努力寻找任何真正的文档来解释如何
  • 无法连接到 gmail smtp linode django apache2 设置

    您好 我在连接到 google smtp 服务器时遇到困难 上下文是 每当用户填写表单时 我的程序都会自动通过电子邮件将反馈发送到我的 Gmail 帐户 除了程序卡在 send mail 函数中之外 一切正常 我尝试这样做 telnet s
  • 如何使用 Java 8 流 API 以 O(N) 时间和 O(C) 空间复杂度从列表中仅删除一个最大值(最小值)

    以下代码用于从列表中仅删除一个最大值 在本例中为第一个值 但这无关紧要 这是O n 及时和O n 在空间中 超出输入 public List