重新排列一個數組,使得arr變成arr],並且只使用O(1)額外的空間,使用C++實現
我們得到一個正整數類型數組,比方說,任意給定大小的 arr[],這樣數組中的元素值應大於 0 但小於數組的大小。任務是重新排列 一個數組,僅在給定的 O(1) 空間內將 arr[i] 變為 arr[arr[i]] 並列印最終結果。
讓我們來看看這個情況的各種輸入輸出場景−
輸入− int arr[] = {0 3 2 1 5 4 }
輸出− 排列前的陣列: 0 3 2 1 5 4 重新排列數組,使arr[i] 變成arr[arr[i]],並具有O(1) 額外空間: 0 1 2 3 4 5
解釋#− 我們給定一個大小為6 的整數數組,並且數組中的所有元素值小於6。現在,我們將重新排列數組,即arr[arr[0] 為0,arr[arr[1]] 為1,arr[arr [2]] 為2,arr[arr[3]] 為3,arr[ arr[4]] 為4,arr[arr[5]] 為5。因此,重新排列後的最終陣列為0 1 2 3 4 5.
#輸入− int arr[] = {1, 0}
輸出− 排列前的陣列:1 0 重新排列數組,使arr[i] 變成arr[arr[i]],其中O(1) 額外空間為: 0 1
解釋 - 我們得到一個整數大小為2 且陣列中所有元素值小於2 的陣列。現在,我們將重新排列該數組,即 arr[arr[0] 為 1,arr[arr[1]] 為 0。因此,重新排列後的最終數組是 0 1。
輸入− int arr[] = {1, 0, 2, 3}
輸出−排列前的陣列:1 0 2 3 重新排列數組,使arr[i] 變成arr[arr[i]],並具有O(1) 額外空間: 0 1 2 3
解釋 - 我們給出大小為4 的整數數組,且數組中的所有元素值小於4。現在,我們將重新排列數組,即 arr[arr[0] 為 0,arr[arr[1]] 為 1,arr[arr[2] ]] 為 2,arr[arr[3]] 為 3。因此,重新排列後的最終數組為 0 1 2 3。
下面程式中使用的方法如下
輸入一個整數元素數組,計算數組大小
列印排列前的數組,呼叫函數Rearrangement (arr, size)
-
函數內部重排(arr, size)
開始循環FOR from i 到0 直到i 小於大小。在循環內部,將 temp 設定為 arr[arr[i]] % size 和 arr[i] = temp * size。
開始迴圈 FOR 從 i 到 0 直到 i小於尺寸。在循環內,設定 arr[i] = arr[i] / size
列印結果。
範例
#include <bits/stdc++.h> using namespace std; void Rearrangement(int arr[], int size){ for(int i=0; i < size; i++){ int temp = arr[arr[i]] % size; arr[i] += temp * size; } for(int i = 0; i < size; i++){ arr[i] = arr[i] / size; } } int main(){ //input an array int arr[] = {0, 3, 2, 1, 5, 4}; int size = sizeof(arr) / sizeof(arr[0]); //print the original Array cout<<"Array before Arrangement: "; for (int i = 0; i < size; i++){ cout << arr[i] << " "; } //calling the function to rearrange the array Rearrangement(arr, size); //print the array after rearranging the values cout<<"\nRearrangement of an array so that arr[i] becomes arr[arr[i]] with O(1) extra space is: "; for(int i = 0; i < size; i++){ cout<< arr[i] << " "; } return 0; }
輸出
如果我們執行上面的程式碼,它將產生以下輸出
Array before Arrangement: 0 3 2 1 5 4 Rearrangement of an array so that arr[i] becomes arr[arr[i]] with O(1) extra space is: 0 1 2 3 4 5
以上是重新排列一個數組,使得arr變成arr],並且只使用O(1)額外的空間,使用C++實現的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

問題使用C程式解釋陣列的後置遞增和前置遞增的概念。解決方案遞增運算子(++)-用於將變數的值增加1有兩種類型的遞增運算子-前置遞增和後置遞增。在前置遞增中,遞增運算子放在運算元之前,數值先遞增,然後再進行操作。 eg:z=++a;a=a+1z=a自增運算子在後增運算中放置在運算元之後,操作完成後值會增加。 eg:z=a++;z=aa=a+1讓我們考慮一個例子,透過使用前增量和後增量來存取記憶體位置中的特定元素。宣告一個大小為5的陣列並進行編譯時初始化。之後嘗試將前增量值賦給變數'a'。 a=++arr[1]

PHP中數組(array)的基本操作和使用方法一、概述數組是PHP中非常重要的資料類型,它可以用來儲存多個值,並且可以透過索引或鍵來存取這些值。陣列在PHP中擁有豐富的操作和使用方法,本文將詳細介紹PHP中陣列的基本操作和使用方法。二、創建數組在PHP中,可以透過兩種方式來建立數組:可數數組和關聯數組。建立可數數組可數數組是按順序排列並以數字索引的數組

Java中為陣列中新增元素是一種常見的操作,可以使用多種方法實作。本文將介紹幾種常見的添加元素到數組的方法,並提供相應的程式碼範例。一、使用新數組常見的方法是建立一個新的數組,將原始數組的元素複製到新數組中,並在新數組的末尾添加新元素。具體步驟如下:建立一個新的數組,大小比原始數組大1。這是因為要新增一個新元素。將原數組的元素複製到新數組中。在新數組的最後添
![重新排列一個數組,使得arr變成arr],並且只使用O(1)額外的空間,使用C++實現](https://img.php.cn/upload/article/000/000/164/169319478769496.jpg?x-oss-process=image/resize,m_fill,h_207,w_330)
我們得到一個正整數類型數組,比方說,任意給定大小的arr[],這樣數組中的元素值應大於0但小於數組的大小。任務是重新排列一個數組,僅在給定的O(1)空間內將arr[i]變為arr[arr[i]]並列印最終結果。讓我們來看看這種情況的各種輸入輸出場景−輸入−intarr[]={032154}輸出−排列前的陣列:032154重新排列數組,使arr[i]變成arr[arr[i]],並且具有O(1)額外空間:012345解釋−我們給定一個大小為6的整數數組,並且數組中的所有元素值小於6。現在,我們將重新排列

Java透過利用陣列和泛型來實現堆疊。這創建了一個多功能且可重複使用的資料結構,該結構按照後進先出(LIFO)的原則運作。按照這個原則,元素是從頂部新增和刪除的。透過利用數組作為基礎,它確保了高效的記憶體分配和存取。此外,透過合併泛型,堆疊能夠容納不同類型的元素,從而增強其多功能性。此實作涉及包含泛型類型參數的Stack類別的定義。它包括基本方法,如push()、pop()、peek()和isEmpty()。邊緣情況的處理(例如堆疊溢位和下溢)對於確保無縫功能也至關重要。此實作使開發人員能夠創建能夠容納

我們得到一個包含正數和負數的整數類型數組,比方說,任意給定大小的arr[]。任務是以這樣的方式重新排列數組,使得偶數位置或索引處的所有元素都應大於奇數位置或索引處的元素,並且列印結果。讓我們來看看這個的各種輸入輸出場景-輸入−intarr[]={2,1,4,3,6,5,8,7}輸出−排列前的陣列:21436587重新排列數組,使得偶數位置大於奇數位置:12345678解釋−我們得到一個大小為8的整數數組,其中包含正數和負因子。現在,我們將陣列重新排列,使得偶數位置的所有元素都大於奇數位置的元素,

數組是相同類型元素的順序集合。數組用於儲存資料的集合,但將數組視為相同類型的變數的集合通常更有用。而不是宣告單一變量,例如number0、number1、...和number99,您可以宣告一個陣列變數(例如數字),並使用numbers[0]、numbers[1]和...、numbers[99]來表示各個變數。數組中的特定元素透過索引存取。所有數組都由連續的記憶體位置組成。最低地址對應於第一個元素,最高地址對應於最後一個元素。聲明數組聲明數組需要指定元素的類型以及所需元素的數量。一個數組如下-ty

深入解析JS內建物件的功能與特點JavaScript是一門基於物件的程式語言,它提供了許多內建對象,這些物件擁有各種豐富的功能和特點。在本文中,我們將深入解析一些常用的內建對象,並給出相應的程式碼範例。 Math物件Math物件提供了一些基本的數學運算方法,如求冪、開方、對數等。以下是一些常用的Math物件的方法範例://求絕對值Math.abs(-10
