题解 | #二进制数组分组#
二进制数组分组
https://www.nowcoder.com/practice/caea91f4980b4dd98ef6853dcbfd0065
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param data int整型vector
* @return int整型
*/
int minSwaps(vector<int>& data) {
// write code here
int cnt = 0;
int n = data.size();
//求出1的个数和cnt
for(auto d : data){
cnt += d;
}
//滑动窗口找出长度为cnt的窗口中0的最少个数和,
//初始化ans,t为当前窗口1的个数
int ans = cnt, t = 0;
for(int i = 0; i < n ;i++){
t += data[i];
if(i >= cnt){
t -= data[i - cnt];
}
ans = min(ans, cnt - t);
}
return ans;
}
};
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param data int整型一维数组
* @return int整型
*/
public int minSwaps (int[] data) {
// write code here
int cnt = 0;
int n = data.length;
//求出1的个数和cnt
for(int d : data){
cnt += d;
}
//滑动窗口找出长度为cnt的窗口中0的最少个数和,
//初始化ans,t为当前窗口1的个数
int ans = cnt, t = 0;
for(int i = 0; i < n ;i++){
t += data[i];
if(i >= cnt){
t -= data[i - cnt];
}
ans = Math.min(ans, cnt - t);
}
return ans;
}
}