Sort Array By Parity II - Array - Easy - LeetCode
💻 coding

Sort Array By Parity II - Array - Easy - LeetCode

1 min read 173 words
1 min read
ShareWhatsAppPost on X
  • 1The problem requires sorting an array such that odd integers are at odd indices and even integers are at even indices.
  • 2The solution involves swapping elements to achieve the desired arrangement while maintaining the original count of odd and even numbers.
  • 3The algorithm has a time complexity of O(n^2) and a space complexity of O(1), making it efficient for the given constraints.

AI-generated summary · May not capture all nuances

Key Insight
AskGif

"The problem requires sorting an array such that odd integers are at odd indices and even integers are at even indices."

— Sort Array By Parity II - Array - Easy - LeetCode

Given an array A of non-negative integers, half of the integers in A are odd, and half of the integers are even.

Sort the array so that whenever A[i] is odd, i is odd; and whenever A[i] is even, i is even.

You may return any answer array that satisfies this condition.

Example 1:

Input: [4,2,5,7] Output: [4,5,2,7] Explanation: [4,7,2,5], [2,5,4,7], [2,7,4,5] would also have been accepted.

Note:

2 <= A.length <= 20000 A.length % 2 == 0 0 <= A[i] <= 1000

public class Solution {
 public int[] SortArrayByParityII(int[] A) {
 if(A.Length<=1){
 return A;
 }
 
 int evenIndexWithOddValue = -1;
 int oddIndexWithEvenValue= -1;
 
 evenIndexWithOddValue= FindNextEvenIndexWithOddValue(A,0);
 oddIndexWithEvenValue= FindNextOddIndexWithEvenValue(A,0);
 
 while(evenIndexWithOddValue != -1 && oddIndexWithEvenValue != -1){
 int temp = A[evenIndexWithOddValue];
 A[evenIndexWithOddValue] = A[oddIndexWithEvenValue];
 A[oddIndexWithEvenValue]=temp;
 
 evenIndexWithOddValue= FindNextEvenIndexWithOddValue(A,evenIndexWithOddValue+1);
 oddIndexWithEvenValue= FindNextOddIndexWithEvenValue(A,oddIndexWithEvenValue+1);
 }
 
 return A;
 }
 
 private int FindNextEvenIndexWithOddValue(int[] A, int start){
 for(int i=start;i<A.Length;i++){
 if(A[i]%2==1 && i%2==0){
 return i;
 }
 }
 return -1;
 }
 
 private int FindNextOddIndexWithEvenValue(int[] A, int start){
 for(int i=start;i<A.Length;i++){
 if(A[i]%2==0 && i%2==1){
 return i;
 }
 }
 return -1;
 }
}

Time Complexity: O(n^2)

Space Complexity: O(1)

Enjoyed this article?

Share it with someone who'd find it useful.

ShareWhatsAppPost on X

sumitc91

Published on 27 September 2020 · 1 min read · 173 words

Part of AskGif Blog · coding

You might also like