列表

详情


100346. 使二进制数组全部等于 1 的最少操作次数 II

给你一个二进制数组 nums 。

你可以对数组执行以下操作 任意 次(也可以 0 次):

反转 一个元素指的是将它的值从 0 变 1 ,或者从 1 变 0 。

请你返回将 nums 中所有元素变为 1 的 最少 操作次数。

 

示例 1:

输入:nums = [0,1,1,0,1]

输出:4

解释:
我们可以执行以下操作:

示例 2:

输入:nums = [1,0,0,0]

输出:1

解释:
我们可以执行以下操作:

 

提示:

相似题目

最少的后缀翻转次数

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: int minOperations(vector<int>& nums) { } };

javascript 解法, 执行用时: 4 ms, 内存消耗: 58.8 MB, 提交时间: 2024-10-19 14:06:38

/**
 * @param {number[]} nums
 * @return {number}
 */
var minOperations = function(nums) {
    let ans = nums[0] ^ 1;
    for (let i = 1; i < nums.length; i++) {
        ans += nums[i - 1] ^ nums[i];
    }
    return ans;
};

var minOperations2 = function(nums) {
    let k = 0;
    for (const x of nums) {
        if (x === k % 2) { // 必须操作
            k++;
        }
    }
    return k;
};

rust 解法, 执行用时: 0 ms, 内存消耗: 2.6 MB, 提交时间: 2024-10-19 14:06:10

impl Solution {
    pub fn min_operations(nums: Vec<i32>) -> i32 {
        let mut k = 0;
        for x in nums {
            if x == k % 2 { // 必须操作
                k += 1;
            }
        }
        k
    }

    pub fn min_operations2(nums: Vec<i32>) -> i32 {
        let mut ans = nums[0] ^ 1;
        for i in 1..nums.len() {
            ans += nums[i - 1] ^ nums[i];
        }
        ans
    }
}

python3 解法, 执行用时: 97 ms, 内存消耗: 20.5 MB, 提交时间: 2024-06-27 22:32:20

class Solution:
    def minOperations(self, nums: List[int]) -> int:
        ans = 0
        for x in nums:
            if x == ans % 2:
                ans += 1
        return ans

golang 解法, 执行用时: 138 ms, 内存消耗: 8.4 MB, 提交时间: 2024-06-27 22:32:05

func minOperations(nums []int) (ans int) {
	for _, x := range nums {
		if x == ans%2 {
			ans++
		}
	}
	return
}

java 解法, 执行用时: 9 ms, 内存消耗: 55.5 MB, 提交时间: 2024-06-27 22:31:52

class Solution {
    public int minOperations(int[] nums) {
        int ans = 0;
        for (int x : nums) {
            if (x == ans % 2) {
                ans++;
            }
        }
        return ans;
    }
}

cpp 解法, 执行用时: 108 ms, 内存消耗: 151.3 MB, 提交时间: 2024-06-27 22:31:38

class Solution {
public:
    int minOperations(vector<int>& nums) {
        int ans = 0;
        for (int x : nums) {
            ans += x == ans % 2;
        }
        return ans;
    }
};

上一题