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

Sort Array By Parity II - Array - Easy - LeetCode | AskGif Blog