Əlavə boş yerə icazə verilən bütün mənfi elementləri sona çatdırmaq üçün hərəkət etdirin

Çətinlik səviyyəsi Asan
Tez-tez soruşulur Capital One Citrix IBM SAP Laboratoriyaları Taksi4Sure Twilio
GeyimBaxılıb 69

Sistem dizaynı ilə bağlı müsahibə sualları o qədər açıq ola bilər ki, düzgün hazırlaşmağı bilmək çox çətindir. İndi satın aldıqdan sonra Amazon, Microsoft və Adobe-nin dizayn dövrlərini sındıra bilirəm Bu kitabı. Gündəlik bir yenidən nəzərdən keçirin dizayn sualı və söz verirəm ki, dizayn dövrünü sındıra bilərsiniz.

Problem bəyanat

"Bütün mənfi elementləri icazə verilən əlavə boşluqla sona çatdırmaq üçün hərəkətə keçirin" deyilir ki, hər ikisinə müsbət və mənfi rəqəmləri olan bir sıra verilir. Problem ifadəsi massivin sonundakı bütün mənfi elementləri köçürməyi xahiş edir.

misal

arr[] = { 1,2,-3,-5,2,7,-9,-11 }
1, 2, 2, 7, -3, -5, -9, -11
İzahat: Bütün mənfi dəyərlər massivin sonuncusuna keçirilmişdir. Və onlar da ilk sıradadırlar.

Bütün mənfi elementləri əlavə boşluqla sona çatdırmaq üçün hərəkət etmə alqoritmi

1. Declare an array same as the size of the original array.
2. Traverse the array and check if any number is greater than or equal to 0,
    1. If true then copy that number from the 0th position of the array we created.
3. Now traverse the array and check if any of the numbers is less than 0.
    1. If true, then copy that value to the array we created from the next position where the positive number ends.
4. Now copy that temporary array we created into the original array and print that array.

Izahat

Bizə bir tam həm mənfi, həm də müsbət rəqəmləri ehtiva edən sıra. Dizini elə tərtib etməyimizi xahiş etdik ki, bütün mənfi elementləri massivin sonuna / sonuna aparaq. Sonra pozitiv və mənfi elementlər üçün serialı ayrı-ayrılıqda gəzəcəyik. Əvvəlcə onları sola çəkməli olduğumuz pozitiv elementlər üzərində əməliyyatlar aparmalıyıq. Və sonra bütün mənfi elementləri sağa çevirin.

Orijinal massivlə eyni ölçüdə əlavə bir sıra yaratmalıyıq. Çünki bu sayda istədiyiniz ədədi düzəldəcəyik. Dəyişən bir indeks götürərək 0 olaraq başladın. Bu dəyişən müsbət və mənfi elementləri ayırmağa kömək edəcəkdir. İndi bir sıra yaratdıq. Orijinal massivdən müvəqqəti massivə müsbət rəqəmlər qoyacağıq.

Dizi elementlərinin 0-dan böyük və ya bərabər olduğunu keçərkən yoxlayacağıq, yalnız müvəqqəti massivin başlanğıc mövqeyindən həmin elementi müvəqqəti massivə kopyalayın. Həm də indeks dəyərini eyni vaxtda artırırıq, bu səbəbdən son pozitiv elementi kopyaladığımız üçün saxlanılacağı növbəti element kimi bir dəyər indeksinə sahibik, bunun köməyi ilə bütün mənfi elementləri sonda itələyəcəyik.

İndi yenidən serialı keçib sıfır olduqda elementlərin hər birinin 0-dan az olub olmadığını yoxlamağa başlayacağıq, sonra həmin dəyəri dayandırdığımız indeks dəyərindən müvəqqəti massivə basmağa başlayaq. Nəhayət, həmin massivi orijinal massivə kopyalayın, sonra çap edin və ya sadəcə müvəqqəti massivi çap edin, hər ikisi eyni şeylərdir. Və lazımi nəticəni əldə edirik.

Əlavə boş yerə icazə verilən bütün mənfi elementləri sona çatdırmaq üçün hərəkət etdirinPin

Kodu

C ++ kodu əlavə mənfi elementləri tamamlamaq üçün bütün mənfi elementləri hərəkət etdirin

#include<bits/stdc++.h>
using namespace std;

void segregateElements(int arr[], int n)
{
    int temp[n];

    int j = 0;

    for (int i = 0; i < n ; i++)
        if (arr[i] >= 0 )
            temp[j++] = arr[i];

    if (j == n || j == 0)
        return;

    for (int i = 0 ; i < n ; i++)
        if (arr[i] < 0)
            temp[j++] = arr[i];

    memcpy(arr, temp, sizeof(temp));
}

void printArray(int arr[], int n)
{
    for (int i = 0; i < n; i++)
        cout << arr[i] << " ";
}

int main()
{
    int arr[] = { 1,2,-3,-5,2,7,-9,-11 };
    int n = sizeof(arr)/sizeof(arr[0]);

    segregateElements(arr, n);
    printArray(arr,n);

    return 0;
}
1 2 2 7 -3 -5 -9 -11

Bütün mənfi elementləri hərəkətə gətirmək üçün Java kodu icazə verilən əlavə yerlə sona çatmaq üçün

import java.util.Arrays;

class moveNegativeElement
{
    public static void segregateElements(int arr[], int n)
    {
        int temp[] = new int[n];

        int j = 0;

        for (int i = 0; i < n; i++)
            if (arr[i] >= 0)
                temp[j++] = arr[i];

        if (j == n || j == 0)
            return;

        for (int i = 0; i < n; i++)
            if (arr[i] < 0)
                temp[j++] = arr[i];

        for (int i = 0; i < n; i++)
            arr[i] = temp[i];
    }
    public static void printArray(int arr[], int n)
    {
        for (int i = 0; i < n; i++)
            System.out.print(arr[i] + " ");
    }
    public static void main(String arg[])
    {
        int arr[] = { 1,2,-3,-5,2,7,-9,-11 };
        int n = arr.length;

        segregateElements(arr, n);
        printArray(arr,n);

    }
}
1 2 2 7 -3 -5 -9 -11

Mürəkkəblik təhlili

Zamanın mürəkkəbliyi

O (N) hara "N" massivdəki elementlərdir. Xətti zaman mürəkkəbliyinə nail olduğumuz üçün sadəcə serialı keçdik.

Kosmik Mürəkkəblik

O (N) hara "N" massivdəki elementlərdir. Elementləri istədiyimiz şəkildə saxladığımız müvəqqəti istifadə üçün əlavə bir sıra yaratdıq.

Crack Sistemi Dizayn Müsahibələri
Translate »