ደርድር ድርድር በ Parity II Leetcode Solution


የችግር ደረጃ ቀላል
ውስጥ በተደጋጋሚ ተጠየቀ አማዞን
ሰልፍ መደርደር

የችግር እሴት

በችግሩ ውስጥ ”ደርድር ድርድር በ አቀማመጥ II ፣ ”ሁሉም ንጥረ ነገሮች አዎንታዊ ኢንቲጀሮች የሆኑበት የእኩልነት ድርድር ተሰጥቶናል ፡፡ ድርድሩ በርካታ ቁጥር ያላቸውን ንጥረ ነገሮችን ይ containsል። ድርድሩ እኩል እና ያልተለመዱ ነገሮችን እኩል ቁጥር ይ containsል።

የእኛ ተግባር የሰልፉን ንጥረ ነገሮች እንደገና ማደራጀት ነው (i) እኔ እኩል ባልሆንኩበት ጊዜ እኩልነት ያለው አካልን በሚይዝበት ሁኔታ (i) አንድ ያልተለመደ ነገር መያዝ እና ከዚያ አዲሱን ድርድር መመለስ አለበት ፡፡

ለምሳሌ

parity=[1,2,3,4]
[2,1,4,3]

ማብራሪያ:  ሁኔታውን የሚያሟላ ሁሉም ድርድር የሚከተሉት ናቸው-[2,1,4,3] ፣ [2,3,4,1] ፣ [4,1,2,3] ፣ [4,3,2,1]። ከእነዚህ ድርድር ውስጥ ማንኛውም ሰው ትክክለኛ መልስ ነው።

ለድርድር አቀራረብ አቀራረብ በ Parity II Leetcode Solution

የዚህ ችግር የመጀመሪያ እና መሰረታዊ አቀራረብ አዲስ ድርድር መፍጠር እና ከዚያ የድሮውን ድርድር ማቋረጥ ነው ፡፡ አንድ እኩል የሆነ ንጥረ ነገር ሲያጋጥመን ከዚያ ወደ አዲሱ ድርድር እኩል ቦታ ላይ እናስቀምጠው እና ያልተለመደ ንጥረ ነገር ሲያጋጥመን ከዚያ ወደ አዲሱ ድርድር ያልተለመደ ቦታ ውስጥ ያስገቡት ፡፡ ይህ አካሄድ ተጨማሪ ቦታን ስለሚጠቀም በቦታ መልሶ ማደራጀት በመጠቀም አመክንዮአችንን ማሻሻል እንችላለን ፡፡

ደርድር ድርድር በ Parity II Leetcode Solution

ሀሳቡ ሁሉንም ሁሉንም ንጥረ ነገሮች በእኩል ቦታ ላይ ብናስቀምጥ ያልተለመዱ አካላት በራስ-ሰር ባልተስተካከለ ቦታ ላይ ይሆናሉ ፡፡ ስለዚህ እኛ ነገሮችን እንኳን በእኩል ቦታ ላይ ለማስቀመጥ እንዴት ብቻ ትኩረት ማድረግ አለብን ፡፡ እኛ የሚከተሉትን እርምጃዎች እንከተላለን

  1. ተለዋዋጭ I ን በ 0 እና በጄ በ 1. አነሳስ እዚህ እዚህ ቦታ ላይ ብቻ እጓዛለሁ ስለዚህ በእያንዳንዱ ጊዜ እሴቱን በ 2 ከፍ እናደርጋለን እናም ጄ ያልተለመደ ቦታ ብቻ ስለሚጓዝ እሴቱን በ 2 እንጨምራለን ፡፡
  2. እኩልነት [i] ያልተለመደ ከሆነ ከዚያ ለየትኛው ክፍል [j] እኩል የሆነ አጃን እናገኛለን ከዚያም በ i እና j ላይ አባሎችን እንለዋወጣለን ፡፡
  3. የ i ዋጋ ከእኩልነት ድርድር ርዝመት ያነሰ እስኪሆን ድረስ እነዚህን እርምጃዎች እናደርጋለን።
  4. የእኩልነት ድርድርን ይመልሱ ፡፡

አፈጻጸም

ለደረጃ ድርድር በ Parity II C + ኮድ

#include <bits/stdc++.h> 
using namespace std; 
    vector<int> sortArrayByParityII(vector<int>& A) {
        int n =A.size();
        int j=1;
         for (int i = 0; i < n; i += 2)
            if (A[i] % 2 == 1) {
                while (A[j] % 2 == 1)
                    j += 2;
                swap(A[i],A[j]); 
            }

        return A;
    }
int main() 
{ 
 vector<int> arr = {1,2,3,4}; 
  vector<int>ans=sortArrayByParityII(arr); 
 for(int i=0;i<arr.size();i++)
 cout<<ans[i]<<" ";
 cout<<endl;
 return 0;
}
[2,1,4,3]

የጃቫ ኮድ ለድርድር ድርድር በ Parity II

import java.util.Arrays; 
public class Tutorialcup {
    public static int[] sortArrayByParityII(int[] A) {
        int n =A.length;
        int j=1;
         for (int i = 0; i < n; i += 2)
            if (A[i] % 2 == 1) {
                while (A[j] % 2 == 1)
                    j += 2;
               swap(A, i, j);
                }

        return A;
    }
     private static void swap(int[] A, int i, int j) {
        int temp = A[i];
        A[i] = A[j];
        A[j] = temp;
    }
  public static void main(String[] args) {
        int [] arr = {1,2,3,4}; 
        int[]ans=sortArrayByParityII(arr); 
        System.out.println(Arrays.toString(ans));
  }
}
[2,1,4,3]

የተስተካከለ ድርድር ውስብስብነት ትንተና በ Parity II Leetcode Solution

የጊዜ ውስብስብነት

ከላይ ያለው ኮድ የጊዜ ውስብስብነት ነው ሆይ (n) ምክንያቱም እኛ የአንድነት ድርድርን የምናልፈው አንድ ጊዜ ብቻ ነው ፡፡ እዚህ n የእኩልነት ድርድር ርዝመት ነው።

የቦታ ውስብስብነት

ከላይ ያለው ኮድ የቦታ ውስብስብነት ነው ኦ (1) ምክንያቱም እኛ መልሱን ለማከማቸት የምንጠቀምበት ተለዋዋጭ ብቻ ነው ፡፡

ማጣቀሻዎች