Get the App
SLTechnology News&Howtos  ›  Internet Technology  › 

Remove all negative numbers after the first negative number in the array

Shulou Source: shulou.com Published: 2022-06-03 02:26:51 09月12日 Update

Scala > val a = ArrayBuffer [Int] (1,2pint 3,5,-1,2,3,5) a: scala.collection.mutable.ArrayBuffer [Int] = ArrayBuffer (1,2pint 3,5,1,2,3,5) scala >: paste// Entering paste mode (ctrl-D tofinish) var foundFirstNegative = falseval keepIndexes = for (I 0) # indicates 1yield {if (a (I) < 0) foundFirstNegative = true I # description 2} for (I ares4:scala.collection.mutable.ArrayBuffer [Int] = ArrayBuffer (1,2,3,5,-1,2)

Algorithm description: avoid the traditional multiple moving array, multiple remove, the advantage of the above code design is to find out the elements that do not meet the conditions index, and then delete these elements.

Explanation 1: the first negative number and all positive numbers will pass through the if guard

Note 2: the first negative number goes through the if guard, enters the description 2 code, and sets foundFirstNegative to true. The subsequent negative number cannot pass the if guard part, and I and if are independent and are not surrounded by blocks.

Note 3: set the first keepIndexes.length elements in a to the corresponding integer and the first negative number

Note 4: delete the elements after the keepIndexes.length-1 position in a, and the rest are the required elements.

Tags: Elements negative numbers code unification arrays advantages traditions locations sought integers conditions positive numbers algorithms partial independent mobile design Apple Docker Huawei Linux macOS MariaDB Microsoft MySQL NVidia OPPO Reno MariaDB Apple Shulou Technology NVidia Shulou Tech Info