3
int minSwaps(vector<int> &nums) {5
int ones = 0; // total no. of ones6
for (int i = 0; i < n; i++) {7
if (nums[i] == 1) ones++;9
if (ones <= 1) return 0;11
int k = ones; // sliding window length12
int maxOnes = 0; // maxOnes in sub array of length k14
for (int i = 0; i < k; i++) {15
if (nums[i] == 1) cnt++;18
for (int i = k; i < n + k; i++) {19
if (nums[i - k] == 1) cnt--; // if element removing from window is 1, then decrease count.20
if (nums[i % n] == 1) cnt++; // if element adding to window is 1, then increase count.21
maxOnes = max(maxOnes,22
cnt); // maintaing maxOnes for all sub arrays of length k.24
return (k - maxOnes); // (total length of subarray - ones in the sub array found)