题解 | #二进制数组分组#
二进制数组分组
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; } }