வரிசையைச் சுழற்று


சிரமம் நிலை நடுத்தர
அடிக்கடி கேட்கப்படுகிறது அமேசான் ஆப்பிள் மேக்மைட்ரிப் MAQ மைக்ரோசாப்ட் ஆரக்கிள் எஸ்ஏபி SAP ஆய்வகங்கள் விப்ரோ
அணி பேராசை

சுழற்று வரிசை நாம் ஒரு அளவு N அளவைக் கொடுத்துள்ள ஒரு சிக்கல். நாம் வரிசையை சரியான திசையில் சுழற்ற வேண்டும். ஒவ்வொரு உறுப்பு ஒரு இடத்தின் மூலம் வலது மற்றும் கடைசி வரிசையின் முதல் உறுப்பு முதல் நிலைக்கு வரும். எனவே, நாம் ஒரு மதிப்பை K கொடுத்துள்ளோம், மேலும் K நேரங்களை வலதுபுறமாக மாற்ற வேண்டும், பின்னர் இறுதி வரிசையை அச்சிட வேண்டும். ஒரு எடுத்துக்காட்டை எடுத்து அனைத்து கூறுகளையும் வலதுபுறமாக மாற்றுவதன் மூலம் வரிசையை எவ்வாறு சுழற்றுவது என்று பார்ப்போம்.

வரிசையைச் சுழற்று

உள்ளீட்டு வடிவம்

உள்ளீட்டு வரிசையில் உள்ள தனிமங்களின் எண்ணிக்கையையும், சரியான மாற்றங்களின் எண்ணிக்கையையும் குறிக்கும் இரண்டு முழு மதிப்புகள் N மற்றும் K ஐக் கொண்ட முதல் வரி கொடுக்கப்பட்ட வரிசையில் நிகழ்கிறது.

N முழு மதிப்புகளைக் கொண்ட உள்ளீட்டு வரிசையைக் கொண்ட இரண்டாவது வரி.

வெளியீட்டு வடிவம்

கே வலது மாற்றத்தைச் செய்தபின் இறுதி வரிசையைக் கொண்ட முதல் வரி.

தடைகள்

  • 1 <= N <= 100000
  • -10 ^ 9 <= A [i] <= 10 ^ 9
  • 1 <= k <= 10 ^ 9
8 4
1 5 9 6 5 4 2 7
2 7 1 5 9 6 5 4

விளக்கம்

கொடுக்கப்பட்ட வரிசையில் முதலில், எல்லா வரிசைகளையும் தலைகீழாக மாற்றுகிறோம். இது வரிசையை ஆரம்பத்தில் இருந்து மாற்றிய பின் (K% N-1). இதற்குப் பிறகு, கடைசியாக மீதமுள்ள உறுப்புகளை மாற்றி, K வலது மாற்றத்திற்குப் பிறகு வரும் இறுதி வரிசையைப் பெற்றோம்.

வரிசையைச் சுழற்று

சுழற்ற வரிசைக்கான வழிமுறை

Step:1 Reverse all the array.
Step:2 Reverse first K%N elements.
Step:3 Reverse last N-K%N elements.
Step:4 Print the final array.

சுழற்ற வரிசைக்கு செயல்படுத்தல்

/*C++ Implementation of Rotate Array.*/ 
#include<bits/stdc++.h> 
using namespace std; 
int main() 
{ 
    /*input values.*/ 
    int n,k; 
    cin>>n>>k;
    vector<int> a;
    for(int i=0;i<n;i++)
    {
        int x;
        cin>>x;
        a.push_back(x);
    }
    reverse(a.begin(),a.end());
    reverse(a.begin(),a.begin()+k%n);
    reverse(a.begin()+k%n,a.end());
    for(int i=0;i<n;i++)
    {
        cout<<a[i]<<" ";
    }
    return 0; 
}
13 17
1 6 24 65 13 -234 0 12 54 3 -1 6 3
3 -1 6 3 1 6 24 65 13 -234 0 12 54

நேர சிக்கலானது

ஓ (என்) N என்பது உள்ளீட்டு வரிசையின் அளவு. இங்கே நாம் தலைகீழ் செயல்பாட்டைப் பயன்படுத்துகிறோம், இது எண்ணை மாற்றியமைக்க நேரியல் நேரம் எடுக்கும். இங்கே அதிகபட்சம் அனைத்து உள்ளீட்டு வரிசைகளையும் தலைகீழாக மாற்றுகிறோம். எனவே, எங்கள் அதிகபட்ச நேர சிக்கலானது O (N) ஆக இருக்கும்.

விண்வெளி சிக்கலானது

ஓ (1) ஏனென்றால் நாங்கள் இங்கு கூடுதல் இடத்தைப் பயன்படுத்துவதில்லை. எண்ணைத் திருப்ப O (1) இடத்தை எடுக்கும் தலைகீழ் செயல்பாட்டைப் பயன்படுத்துகிறோம்.

குறிப்புகள்