ຍ້າຍທຸກອົງປະກອບລົບເພື່ອສິ້ນສຸດລົງດ້ວຍການອະນຸຍາດໃຫ້ມີພື້ນທີ່ພິເສດ


ລະດັບຄວາມຫຍຸ້ງຍາກ Easy
ຖາມເລື້ອຍໆໃນ Capital One Citrix IBM ຫ້ອງທົດລອງ SAP Taxi4Sure Twilio
Array

ຖະແຫຼງການບັນຫາ

"ຍ້າຍທຸກອົງປະກອບລົບເພື່ອສິ້ນສຸດລົງໃນບ່ອນທີ່ມີພື້ນທີ່ພິເສດທີ່ອະນຸຍາດ" ກ່າວວ່າທ່ານໄດ້ຖືກຈັດໃຫ້ມີແຖວທີ່ມີຕົວເລກບວກແລະລົບທັງສອງ. ຄໍາຖະແຫຼງທີ່ມີບັນຫາຂໍໃຫ້ຍ້າຍທຸກອົງປະກອບລົບໃນແຖວສຸດທ້າຍ.

ຍົກຕົວຢ່າງ

arr[] = { 1,2,-3,-5,2,7,-9,-11 }
1, 2, 2, 7, -3, -5, -9, -11
ຄຳ ອະທິບາຍ: ຄຸນຄ່າທາງລົບທັງ ໝົດ ໄດ້ຖືກປ່ຽນໄປເປັນແຖວສຸດທ້າຍ. ແລະພວກເຂົາກໍ່ຢູ່ໃນລໍາດັບເບື້ອງຕົ້ນເຊັ່ນກັນ.

ສູດການຄິດໄລ່ເພື່ອຍ້າຍອົງປະກອບລົບທັງ ໝົດ ໃຫ້ສິ້ນສຸດລົງໂດຍອະນຸຍາດໃຫ້ມີພື້ນທີ່ພິເສດ

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.

ຄໍາອະທິບາຍ

ພວກເຮົາໄດ້ຮັບ integer array ມີທັງຕົວເລກລົບແລະບວກ. ພວກເຮົາໄດ້ຂໍຮ້ອງໃຫ້ຈັດແຈງແຖວຄືນ ໃໝ່ ໃນລັກສະນະດັ່ງກ່າວທີ່ພວກເຮົາຕ້ອງຍ້າຍອົງປະກອບລົບທັງ ໝົດ ໄປສູ່ຈຸດສຸດທ້າຍ / ທ້າຍຂອງອາເລ. ຫຼັງຈາກນັ້ນພວກເຮົາຈະ ກຳ ລັງຜ່ານການຈັດລຽງ ລຳ ດັບ ສຳ ລັບອົງປະກອບທາງບວກແລະລົບຕ່າງຫາກ. ຫນ້າທໍາອິດ, ພວກເຮົາຕ້ອງດໍາເນີນການປະຕິບັດງານກ່ຽວກັບອົງປະກອບໃນທາງບວກທີ່ພວກເຮົາຕ້ອງດຶງພວກເຂົາໄປທາງຊ້າຍ. ແລະຫຼັງຈາກນັ້ນປ່ຽນອົງປະກອບລົບທັງ ໝົດ ໄປທາງຂວາ.

ພວກເຮົາຕ້ອງສ້າງຂອບເຂດຂະ ໜາດ ພິເສດທີ່ມີຂະ ໜາດ ດຽວກັນກັບແຖວເດີມ. ເນື່ອງຈາກວ່າໃນນີ້, ພວກເຮົາຈະຈັດເກັບຕົວເລກທີ່ຕ້ອງການ. ການເກັບເອົາດັດຊະນີຕົວແປແລະເລີ່ມຕົ້ນເປັນ 0. ຕົວແປນີ້ຈະຊ່ວຍໃຫ້ພວກເຮົາ ຈຳ ແນກລະຫວ່າງອົງປະກອບທີ່ເປັນບວກແລະລົບ. ຕອນນີ້ພວກເຮົາໄດ້ສ້າງຂບວນ. ພວກເຮົາຈະເອົາຕົວເລກບວກຈາກແຖວເດີມໄປຫາຂບວນຊົ່ວຄາວ.

ພວກເຮົາຈະກວດສອບໃນຂະນະທີ່ ກຳ ລັງຂ້າມຖ້າຫາກວ່າຄ່າຂອງ array ທີ່ໃຫຍ່ກວ່າຫຼືເທົ່າກັບ 0, ຫຼັງຈາກນັ້ນພຽງແຕ່ copy ອົງປະກອບນັ້ນເຂົ້າໃນ array ຊົ່ວຄາວ, ຈາກ ຕຳ ແໜ່ງ ເລີ່ມຕົ້ນຂອງ array ຊົ່ວຄາວ. ພ້ອມກັນນີ້, ພວກເຮົາ ກຳ ລັງເພີ່ມມູນຄ່າດັດສະນີພ້ອມໆກັນ, ສະນັ້ນເນື່ອງຈາກພວກເຮົາຄັດລອກອົງປະກອບໃນທາງບວກທີ່ຜ່ານມາພວກເຮົາມີດັດສະນີມູນຄ່າຄືກັບອົງປະກອບຕໍ່ໄປບ່ອນທີ່ມັນຈະຖືກເກັບໄວ້, ໂດຍການຊ່ວຍເຫຼືອຂອງສິ່ງນີ້ພວກເຮົາຈະຊຸກຍູ້ທຸກອົງປະກອບລົບທີ່ສຸດ.

ຕອນນີ້ພວກເຮົາຈະໄປກວດເບິ່ງອາເລອີກເທື່ອ ໜຶ່ງ ແລະກວດເບິ່ງວ່າແຕ່ລະອົງປະກອບ ໜ້ອຍ ກ່ວາ 0 ຖ້າວ່າມັນແມ່ນສູນແລ້ວກໍ່ເລີ່ມຍູ້ມູນຄ່ານັ້ນເຂົ້າໄປໃນແຖວຊົ່ວຄາວຈາກມູນຄ່າດັດຊະນີທີ່ພວກເຮົາປ່ອຍ. ໃນທີ່ສຸດ, ຄັດລອກແຖວນັ້ນໄປທີ່ຂບວນເດີມຫຼັງຈາກນັ້ນພິມມັນຫລືພິມແບບຂບວນຊົ່ວຄາວ, ທັງສອງແມ່ນສິ່ງດຽວກັນ. ແລະພວກເຮົາໄດ້ຮັບຜົນຜະລິດທີ່ຕ້ອງການ.

ຍ້າຍທຸກອົງປະກອບລົບເພື່ອສິ້ນສຸດລົງດ້ວຍການອະນຸຍາດໃຫ້ມີພື້ນທີ່ພິເສດ

ລະຫັດ

ລະຫັດ C ++ ເພື່ອຍ້າຍທຸກອົງປະກອບລົບເພື່ອສິ້ນສຸດລົງໂດຍອະນຸຍາດໃຫ້ມີພື້ນທີ່ພິເສດ

#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

ລະຫັດ Java ເພື່ອຍ້າຍອົງປະກອບລົບທັງ ໝົດ ເພື່ອສິ້ນສຸດລົງໂດຍອະນຸຍາດໃຫ້ມີພື້ນທີ່ພິເສດ

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

ການວິເຄາະຄວາມສັບສົນ

ຄວາມສັບສົນເວລາ

ໂອ (N) ບ່ອນທີ່ "N" ແມ່ນອົງປະກອບໃນອາເລ. ພວກເຮົາຫາກໍ່ປ່ຽນເສັ້ນທາງອັນເນື່ອງມາຈາກທີ່ພວກເຮົາໄດ້ບັນລຸຄວາມສັບສົນໃນໄລຍະເວລາ.

ຄວາມສັບສົນໃນອະວະກາດ

ໂອ (N) ບ່ອນທີ່ "N" ແມ່ນອົງປະກອບໃນອາເລ. ພວກເຮົາໄດ້ສ້າງຕາຕະລາງພິເສດ ສຳ ລັບການ ນຳ ໃຊ້ຊົ່ວຄາວບ່ອນທີ່ພວກເຮົາໄດ້ເກັບຮັກສາອົງປະກອບດັ່ງກ່າວໄວ້ໃນແບບທີ່ຕ້ອງການ.