移除数组中第一个负数后的所有负数
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,scala> val a = ArrayBuffer[Int](1, 2,3, 5, -1, 2, -3, -5)a: scala.collection.mutable.ArrayBuffer[Int
千家信息网最后更新 2026年11月01日移除数组中第一个负数后的所有负数
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安全错误
数据库的锁怎样保障安全
亿人帮互联网科技有限公司
互联网为科技
科技信息互联网
科技类互联网
中国 科技 互联网
美国互联网科技
善班互联网科技有限公司
长亮科技互联网金融
互联网科技大会案例
卫星互联网科技股票
互联网科技产品
青岛中康互联网医疗科技有限公司
新华互联网科技2019
互联网科技中介
互联网科技教育视频
茂名市互联网科技产业园
华夏互联网科技业
互联网科技大赛获奖感言
深圳互联网科技的发展
互联网公司属于科技吗
上海卓越科技互联网
为想互联网科技怎么样
科技创新与互联网经济
电子科技大学互联网
火传媒上海互联网科技
金融科技和互联网金融
互联网软件和科技
重庆互联网医院沙龙医盟信息科技
亳州好赞互联网科技有限公司
每日互联网科技新闻