移除数组中第一个负数后的所有负数
发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,scala> val a = ArrayBuffer[Int](1, 2,3, 5, -1, 2, -3, -5)a: scala.collection.mutable.ArrayBuffer[Int
千家信息网最后更新 2025年01月31日移除数组中第一个负数后的所有负数
scala> val a = ArrayBuffer[Int](1, 2,3, 5, -1, 2, -3, -5)a: scala.collection.mutable.ArrayBuffer[Int]= ArrayBuffer(1, 2, 3, 5, -1, 2, -3, -5) scala> :paste// Entering paste mode (ctrl-D tofinish) var foundFirstNegative = falseval keepIndexes = for (i <- 0 untila.length if !foundFirstNegative || a(i) > 0) # 说明1yield {if (a(i) < 0) foundFirstNegative =true; i # 说明2}for (i <- 0 until keepIndexes.length)a(i) = a(keepIndexes(i)) # 说明3a.trimEnd(a.length - keepIndexes.length)# 说明4 // Exiting paste mode, now interpreting. foundFirstNegative: Boolean = truekeepIndexes:scala.collection.immutable.IndexedSeq[Int] = Vector(0, 1, 2, 3, 4,5)scala> ares4:scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 2, 3, 5, -1, 2)
算法说明:避免传统多次移动数组,多次remove,上述代码设计优点在于统一找出不满足条件的元素index,然后统一删除这些元素。
说明1:第一个负数和所有正数都会通过if守卫;
说明2:第一个负数通过if守卫,进入说明2代码,将foundFirstNegative置为true,后续的负数则通不过if守卫部分,且i和if是独立的,并未使用块包围;
说明3:将a中前keepIndexes.length个元素置为对应的整数和第一个负数;
说明4:删掉a中keepIndexes.length - 1位置后面的元素,剩下的即为所求元素。
元素
负数
代码
统一
数组
优点
传统
位置
所求
整数
条件
正数
算法
部分
独立
移动
设计
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
吉林机械软件开发项目信息
与网络安全相关的基金
用数据库语言创建表步骤
字典存储数据库
关系型数据库的结构模型
筑牢网络安全锁防护网
云服务器管理配置
高中网络技术应用人教版
网络安全的画大全图片
网络安全问题的讨论与对策
山东pdu服务器专用电源价位
河北网络技术服务质量
服务器网卡状态检测
咨询公司数据库建设和运营
数据库中的关系r是什么意思
html 调取本地数据库
荒野行动哪个服务器有高级武器
天津潮流软件开发
嘉兴网络技术服务
你为什么要从事软件开发
药品数据库管理系统的作用
数据库设计学籍管理系统需求分析
手机 路由服务器
服务器两个网口怎么配置
手机无法检测网络安全配置
asp存图片到数据库
r星服务器安装在哪个盘
浦东新区咨询软件开发机构整顿
支持ddr5内存的服务器
数据库基础及应用试题名词