C++ 程式把第一個元素翻倍並移動到末尾


在本教程中,我們將編寫一個程式,將第一個元素翻倍,並將所有零移動到給定陣列的末尾。

當相鄰索引中有兩個相同的元素時,我們必須將一個數翻倍。之後,我們必須向陣列新增一個零。

將陣列中的所有零移動到末尾。

示例

讓我們看看程式碼。

 動態演示

#include <bits/stdc++.h>
using namespace std;
void moveZeroesToEnd(int arr[], int n) {
   int count = 0;
   for (int i = 0; i < n; i++) {
      if (arr[i] != 0) {
         arr[count++] = arr[i];
      }
   }
   while (count < n) {
      arr[count++] = 0;
   }
}
void updateAndRearrangeArray(int arr[], int n) {
   if (n == 1) {
      return;
   }
   for (int i = 0; i < n - 1; i++) {
      if ((arr[i] != 0) && (arr[i] == arr[i + 1])) {
         arr[i] = 2 * arr[i];
         arr[i + 1] = 0;
         i++;
      }
   }
   moveZeroesToEnd(arr, n);
}
void printArray(int arr[], int n) {
   for (int i = 0; i < n; i++)
      cout << arr[i] << " ";
}
int main() {
   int arr[] = { 2, 3, 3, 4, 0, 5, 5, 0 }, n = 7;
   cout << "Given Array: ";
   printArray(arr, n);
   cout << endl;
   updateAndRearrangeArray(arr, n);
   cout << "Updated Array: ";
   printArray(arr, n);
   cout << endl;
   return 0;
}

輸出

如果你執行上述程式,你將獲得以下結果。

Given Array: 2 3 3 4 0 5 5
Updated Array: 2 6 4 10 0 0 0

結論

如果你對本教程有任何疑問,請在評論區提及。

更新時間:2021 年 1 月 28 日

90 次瀏覽

開啟你的 職業

完成課程以獲得認證

開始
廣告
© . All rights reserved.