برابري II ليٽ ڪوڊ جو حل ترتيب ڏيو


تڪليف جي سطح آسان
بار بار پڇڻ ۾ Amazon
ڪيريو ترتيب ڏيڻ

مسئلي جو بيان

مسئلو ۾ ”ترتيب آرري طرفان جهڙا II ، ”اسان کي هڪ برابري واري ترتيب ڏني وئي آهي جتي سڀئي عنصر مثبت جڙيل آهن. صف ۾ برابر عنصرن تي مشتمل آھي. صف ۾ برابر ۽ بي جوڙ عنصر موجود آهي.

اسان جو ڪم اهو آهي ته صف جي عناصر کي اهڙي طرح ترتيب ڏيو ته برابري [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] ، [XNUMX،XNUMX،XNUMX،XNUMX] ، [XNUMX،XNUMX،XNUMX،XNUMX] ، [XNUMX،XNUMX،XNUMX،XNUMX]. هنن صفن مان ڪنهن جو به صحيح جواب آهي.

برابري II ليٽ ڪوڊ جو حل ترتيب ڏيڻ واري ترتيب جي لاءِ

هن مسئلي جو پهريون ۽ بنيادي طريقه ڪار هڪ نئين صف ٺاهڻ ۽ پوءِ پراڻي صف کي ترتيب ڏيڻ آهي. جڏهن اسان هڪ هم عنصر سان منهن ڪ thenو ته ان کي نئين صف جي برابر پوزيشن ۾ رکون ۽ جڏهن اسان هڪ بي عنصر عنصر سان منهن ڪ thenو ته ان کي نئين صف جي بي جوڙ پوزيشن ۾ رکون. ھن طريقي سان اضافي جڳھ استعمال ڪئي ۽ اسان پنھنجي ترتيب کي استعمال ڪري سگھون ٿا ترتيب جي ترتيب ۾.

برابري II ليٽ ڪوڊ جو حل ترتيب ڏيو

خيال اهو آهي ته جيڪڏهن اسين سڀ برابر عنصرن کي به برابر جڳهه تي رکون ته بيحد عنصر پاڻمرادو بيهي پوزيشن ۾ هوندو. تنهنڪري اسان کي صرف انهي طرف ڌيان ڏيڻ جي ضرورت آهي ته حتي عنصرن کي به پوزيشن تي ڪيئن رکجي. اسان انهن قدمن تي عمل ڪنداسين:

  1. شروعاتي ۽ متغير I سان 0 ۽ ج 1 سان. هتي مان صرف پوزيشن واري سفر ڪندس ، اسان انهي جي قيمت 2 ڀيرا وڌندا سين ۽ ج صرف بيٺل جڳهه تي سفر ڪندو ، تنهن ڪري اسان ان جي قيمت کي 2 ڀيرا وڌائينداسين.
  2. جيڪڏهن برابري [i] بي مثال آهي ته پوءِ اسان انهي کي ڳوليندا سين جنهن لاءِ برابري [j] برابر آهي ۽ پوءِ I ۽ j تي عنصرن کي مٽائينداسين.
  3. اسان اهو قدم ڪنداسين جيستائين جيستائين مون جي قدر برابري صف جي ڊيگهه کان نن isي آهي.
  4. برابري واري صف کي واپس ڪر.

تي عملدرآمد

برائيٽ II طرفان ترتيب ڏيڻ واري آرري لاءِ سي ++ ڪوڊ

#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]

برابري 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]

برابري II ليٽ ڪوڊ جو حل ترتيب ڏيڻ واري قطار جي پيچيدگي تجزيو

وقت جي پيچيدگي

مٿي ڏنل ڪوڊ جي پيچيدگي آهي اي (ن) ڇاڪاڻ ته اسان فقط هڪ ڀيرو ئي برابري واري صف مان گذري رهيا آهيون. هتي ن برابريت جي قطار جي ڊيگهه آهي.

خلائي پيچيدگي

مٿي ڏنل ڪوڊ جي خلائي پيچيدگي آهي اي (1) ڇاڪاڻ ته اسان جواب کي اسٽور ڪرڻ لاءِ صرف متغير استعمال ڪري رهيا آهيون.

حوالا