Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int longestSubArrayWithContinousOnesAndZeroesEqually(int *arr, int n)
- {
- int longest = 0;
- int startZeroes, endZeroes, startOnes, endOnes;
- int lengthZeroes, lengthOnes;
- startZeroes = endZeroes = startOnes = endOnes = 0;
- lengthZeroes = lengthOnes = 0;
- int i = 0;
- for (; i < n; ++i)
- {
- if (arr[i] == 0)
- {
- startZeroes = endOnes;
- while (i < n && arr[i] == 0)
- ++i;
- endZeroes = i;
- lengthZeroes = endZeroes - startZeroes;
- if (i >= n)
- {
- endZeroes = n - 1;
- break;
- }
- }
- if (arr[i] == 1)
- {
- startOnes = endZeroes;
- while (i < n && arr[i] == 1)
- ++i;
- endOnes = i;
- lengthOnes = endOnes - startOnes;
- if (i >= n)
- {
- endOnes = n - 1;
- break;
- }
- }
- longest = max(longest, min(lengthZeroes, lengthOnes) * 2);
- }
- longest = max(longest, min(lengthZeroes, lengthOnes) * 2);
- return longest;
- }
- int max(int a, int b)
- {
- return a > b ? a : b;
- }
- int min(int a, int b)
- {
- return a < b ? a : b;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement