day-68 使二进制数组全部等于 1 的最少操作次数 I
思路
关键:对同一个i至多操作一次,就可以做到最少的操作次数,且操作的顺序不重要,那么即可从左到右操作,结果一样的,遇到1不操作,遇到0则操作,用一个变量记录操作次数,最后返回即可
解题过程
每次遇到0时,将当前的数及后面两个相连的数与1异或即可
Code
class Solution {
public int minOperations(int[] nums) {
int len=nums.length;
int ans=0;
for(int i=0;i<len-2;i++){
if(nums[i]==0){
ans++;
nums[i]=1^nums[i];
nums[i+1]=1^nums[i+1];
nums[i+2]=1^nums[i+2];
}
}
if(nums[len-2]==0||nums[len-1]==0){
return -1;
}else return ans;
}
}
作者:菜卷
链接:https://leetcode.cn/problems/minimum-operations-to-make-binary-array-elements-equal-to-one-i/solutions/2955951/shi-er-jin-zhi-shu-zu-quan-bu-deng-yu-1-nyu5c/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。