移除数组中第一个负数后的所有负数
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,scala> val a = ArrayBuffer[Int](1, 2,3, 5, -1, 2, -3, -5)a: scala.collection.mutable.ArrayBuffer[Int
千家信息网最后更新 2025年12月02日移除数组中第一个负数后的所有负数
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安全错误
数据库的锁怎样保障安全
什么云服务器能装模拟器
金山网络安全工程师
高中网络安全的漫画
服务器屏蔽端口
pdman 数据库文档
手机网络安全防护软件排行
bbq服务器
php数据库怎么输入表格
网络安全与法制教育心得
网络安全法律法规试题及答案
搭建私有音乐服务器
合肥国家网络安全宣传周
如何取消手机连接服务器
保税区软件开发
网络人气软件开发
大家说说在长沙软件开发工资
我的世界国外小游戏服务器
mc服务器如何给管理
数据库技术思考与探索答案
飞蜗牛软件开发
服务器的名字
服务器在境外的基金平台
为什么区块链没有数据库
中山市券鱼网络技术有限公司
数据库的名字和IP
4399美食大战老鼠服务器列表
星际公民服务器不显示人数
什么是社交网络技术
mysql数据库合同
下拉菜单数据库