Easy
You are given an integer array nums.
In one operation, you can choose any two distinct indices i and j and swap nums[i] and nums[j].
Return an integer denoting the minimum number of operations required to move all 0s to the end of the array.
Example 1:
Input: nums = [0,1,0,3,12]
Output: 2
Explanation:
We perform the following swap operations:
nums[0] and nums[3], giving nums = [3, 1, 0, 0, 12].nums[2] and nums[4], giving nums = [3, 1, 12, 0, 0].Thus, the answer is 2.
Example 2:
Input: nums = [0,1,0,2]
Output: 1
Explanation:
We perform the following swap operations:
nums[0] and nums[3], giving nums = [2, 1, 0, 0].Thus, the answer is 1.
Example 3:
Input: nums = [1,2,0]
Output: 0
Explanation:
The array already satisfies the condition. Therefore, no swap operations are needed.
Constraints:
1 <= nums.length <= 1000 <= nums[i] <= 100class Solution {
private fun swap(nums: IntArray, i: Int, j: Int) {
val temp = nums[i]
nums[i] = nums[j]
nums[j] = temp
}
fun minimumSwaps(nums: IntArray): Int {
val n = nums.size
var count = 0
var l = 0
var r = n - 1
while (l < r) {
if (nums[l] == 0 && nums[r] != 0) {
swap(nums, l, r)
count++
l++
r--
} else if (nums[l] != 0) {
l++
} else if (nums[r] == 0) {
r--
}
}
return count
}
}