រៀបចំអារេឡើងវិញដែលថា 'អា [ជូ]' ក្លាយជា 'ខ្ញុំ' ប្រសិនបើ 'arr [ខ្ញុំ]' គឺ 'ច'  


កម្រិតលំបាក មានភាពងាយស្រួល
សួរញឹកញាប់ ក្រុមហ៊ុន Amazon ដេលីវ៉ាយ គុលលីហ្សា ណាហ្គារ៉ូ ល្ខោនអូប៉េរ៉ា អ៊ិនធឺណិតដង។ Yatra
អារេ

សេចក្តីថ្លែងការណ៍បញ្ហា។  

បញ្ហា” រៀបចំឡើងវិញនូវអារេបែបនេះដែលថា 'អា [ជូ]' ក្លាយជា 'ខ្ញុំ' ប្រសិនបើ 'ទៅដល់ [ខ្ញុំ]' គឺ 'ជ' 'ចែងថាអ្នកមាន “ n” ទំហំអារេមានលេខគត់។ លេខនៅក្នុងអារេគឺស្ថិតនៅចន្លោះពី ០ ដល់ n-១ ។ សេចក្តីថ្លែងការណ៍បញ្ហាស្នើឱ្យរៀបចំអារេឡើងវិញតាមរបៀបដែលអារេ [i] = j ក្លាយជាអា [J] = ខ្ញុំ។

ឧទាហរណ៍  

arr[]={1,3,5,2,0,4}
4 0 3 1 5 2

ការពន្យល់

arr [0] = 1 ត្រូវបានប្តូរទៅជា [1] = 0

arr [1] = 3 ត្រូវបានប្តូរទៅជា [3] = 1

arr [2] = 5 ត្រូវបានប្តូរទៅជា [5] = 2

arr [3] = 2 ត្រូវបានប្តូរទៅជា [2] = 3

arr [4] = 0 ត្រូវបានប្តូរទៅជា [0] = 4

arr [5] = 4 ត្រូវបានប្តូរទៅជា [4] = 5

ដូច្នេះពេលបោះពុម្ព⇒

arr [0] ⇒ arr [1] ⇒ arr [2] ⇒ arr [3] ⇒ arr [4] ⇒ arr [5]

4 0 3 1 5 2

ក្បួនដោះស្រាយដើម្បីរៀបចំអារេឡើងវិញដែលថា 'អា [ជូ]' ក្លាយជា 'ខ្ញុំ' ប្រសិនបើ 'arr [ខ្ញុំ]' គឺ 'ច'  

1. Traverse the array from 0 to n-1(inclusively).
    1. Do arr [ arr % n ] + = i * n.
2. Then update the value of arr[ i ] =arr[ i ] / n.
3. Print the array.

ការពន្យល់

ដែលបានផ្តល់ឱ្យ អារេ of ចំនួនគត់។ លេខដែលវាមានគឺស្ថិតនៅក្នុងចន្លោះពី ០ ដល់ n - ១. យើងនឹងរៀបចំលេខ pf អារេឡើងវិញ។ ដូច្នេះធាតុនៅក្នុងអារេក្លាយជាបែបនោះដែល [[]] = ខ្ញុំប្រសិនបើវាមកដល់ [ខ្ញុំ] = ច។ ដូច្នេះនេះមានន័យថាបើយើងមានតម្លៃខ្លះនៅទីតាំង ith ជា j បន្ទាប់ប្ដូរតម្លៃនោះទៅទីតាំងទី j នៃអារេមួយ។ ដូចគ្នានេះផងដែរយើងបានផ្តល់ធាតុអារេនៅក្នុងជួរពី 0 ដល់ n-1 ។ ដូច្នេះចំនួនមិនអាចលើសពីប្រវែងនៃអារេមួយ។ ដូច្នេះវាអាចមានប្រយោជន៍នៅពេលយើងឆ្លងកាត់អារេយើងអាចយកតម្លៃលេខណាមួយជាសន្ទស្សន៍ហើយអនុវត្តប្រតិបត្តិការមួយចំនួនលើវា។

សូម​មើល​ផង​ដែរ
វិធីឌិកូដ

ដោយសារតែយើងនឹងធ្វើប្រតិបត្តិការមួយចំនួននៅលើអារេខ្លួនឯង។ យើងនឹងជ្រើសរើសធាតុអារេនីមួយៗនិងរកឃើញឯកសារ សំណល់ of arr [i]% n ដែល n ជាប្រវែងនៃអារេមួយ។ ឥឡូវនេះដូចដែលយើងបាននិយាយរួចមកហើយថាលេខគឺស្ថិតនៅចន្លោះពី ០ ដល់ n-១ ។ ដូច្នេះនៅពេលយើងរកម៉ូឌុលនៃលេខណាមួយជាមួយអិន។ វានឹងមិនលើសពីលេខធំជាងសន្ទស្សន៍នៃអារេនោះទេពីព្រោះម៉ូឌុលនៃការមកដល់ [i]% n នឹងត្រូវបានចាត់ទុកជាសន្ទស្សន៍អារេម្តងទៀត។ ហើយបន្ទាប់មកយើងទុកវានៅក្នុងគុណនៃអាយ * n ។ ធ្វើឱ្យទាន់សម័យតម្លៃនីមួយៗនៃម៉ូឌុលជាលិបិក្រមនៃអារេហើយបូកវាដោយខ្លួនវា។

យើងកំពុងធ្វើវាដើម្បីផ្ទុកនិងធ្វើបច្ចុប្បន្នភាពតម្លៃនៅក្នុងអារេប្រសិនបើយើងនឹងទៅយកវា។ យើងត្រូវបែងចែកពួកគេ។ ពីព្រោះប្រសិនបើអ្នកគុណនឹងលេខគុណនឹង x ហើយចែកជាមួយនឹងលេខនោះលេខនឹងអព្យាក្រឹតដូចវាដែរ។ ធ្វើឱ្យទាន់សម័យការមកដល់ [ខ្ញុំ] ដោយបែងចែកការមកដល់ [i] ដោយ n ហើយទុកវាអោយមកដល់ [ខ្ញុំ] ។ តាមរបៀបនេះយើងនឹងទទួលបានលទ្ធផលដែលចង់បាន។ នោះហើយជារបៀបរៀបចំអារេដូចថា 'អា [ជូ]' ក្លាយជា 'ខ្ញុំ' ប្រសិនបើ 'arr [ខ្ញុំ]' គឺ 'ច' ។

រៀបចំអារេឡើងវិញដែលថា 'អា [ជូ]' ក្លាយជា 'ខ្ញុំ' ប្រសិនបើ 'arr [ខ្ញុំ]' គឺ 'ច'ពិន

លេខកូដ  

កូដ C ++ ដើម្បីរៀបចំអារេឡើងវិញដែលថា 'អា [ច]' ក្លាយជា 'ខ្ញុំ' ប្រសិនបើ 'arr [ខ្ញុំ]' គឺ 'ច'

#include<iostream>

using namespace std;

void rearrangeIndexValue(int arr[], int n)
{
    for (int i = 0; i < n; i++)
    {
        arr[arr[i] % n] += i * n;
    }

    for (int i = 0; i < n; i++)
    {
        arr[i] /= n;
    }
}
void printArray(int arr[], int n)
{
    for (int i = 0; i < n; i++)
        cout << arr[i] << " ";
}
int main()
{
    int arr[] = { 1,3,5,2,0,4};
    int n = sizeof(arr) / sizeof(arr[0]);

    cout << "Array after modifying :";
    rearrangeIndexValue(arr,n);
    printArray(arr, n);

    return 0;
}
Array after modifying :4 0 3 1 5 2

កូដចាវ៉ាដើម្បីរៀបចំអារេឡើងវិញដែលថា 'អា [ជូ]' ក្លាយជា 'ខ្ញុំ' ប្រសិនបើ 'arr [ខ្ញុំ]' គឺ 'ច'

class rearrangeArray2
{
    public static void rearrangeIndexValue(int arr[], int n)
    {
        for (int i = 0; i < n; i++)
        {
            arr[arr[i] % n] += i * n;
        }
        for (int i = 0; i < n; i++)
        {
            arr[i] /= n;
        }
    }
    public static void printArray(int arr[], int n)
    {
        for (int i = 0; i < n; i++)
        {
            System.out.print(arr[i] + " ");
        }
        System.out.println();
    }
    public static void main(String[] args)
    {
        int arr[] = { 1,3,5,2,0,4};
        int n = arr.length;

        rearrangeIndexValue(arr, n);

        System.out.print("Array after modifying : ");
        printArray(arr, n);
    }
}
Array after modifying : 4 0 3 1 5 2

ការវិភាគស្មុគស្មាញ  

ស្មុគស្មាញពេលវេលា

អូរ (n) ដែលជាកន្លែងដែល “ n” គឺជាចំនួនធាតុក្នុងអារេ។ ទោះបីជាយើងឆ្លងកាត់ធាតុនៃអារេពីរដងក៏ដោយ។ ដូច្នេះនេះនៅតែរាប់ថាជាពេលវេលាស្មុគស្មាញលីនេអ៊ែរប៉ុណ្ណោះ។

សូម​មើល​ផង​ដែរ
រាប់ Subarrays ជាមួយធាតុដូចគ្នានិងសេស

ភាពស្មុគស្មាញនៃលំហ

អូរ (n) ដែលជាកន្លែងដែល “ n” គឺជាចំនួនធាតុក្នុងអារេ។ ចាប់តាំងពីយើងមិនបានរក្សាទុកអ្វីដែលទាក់ទងនឹងធាតុនីមួយៗហើយបានយកតែចន្លោះថេរប៉ុណ្ណោះ។ ដូច្នេះភាពស្មុគស្មាញនៃលំហសម្រាប់ក្បួនដោះស្រាយគឺថេរ។