C++程式:移除操作後陣列的減小尺寸


假設我們有一個包含n個元素的陣列A。考慮一個包含n個正整數的密碼。我們對陣列執行以下操作:移除兩個不相鄰的元素,然後將它們的和放在該位置。此操作將使陣列的大小減少1。我們必須找到執行這些操作後陣列的最短可能長度。

因此,如果輸入類似於A = [2, 1, 3, 1],則輸出將為1,因為如果我們選擇(1, 3),陣列將為[2, 4, 1],然後選擇(2, 4)使陣列變為[6, 1],然後選擇最後兩個得到[7]。

步驟

為了解決這個問題,我們將遵循以下步驟:

n := size of A
Define one set se
for initialize i := 0, when i < n, update (increase i by 1), do:
   insert A[i] into se
if size of se is same as 1, then:
   return n
Otherwise
   return 1

示例

讓我們看下面的實現以更好地理解:

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

int solve(vector<int> A) {
   int n = A.size();
   set<int> a;
   for (int i = 0; i < n; i++) {
      a.insert(A[i]);
   }
   if (a.size() == 1)
      return n;
   else
      return 1;
}
int main() {
   vector<int> A = { 2, 1, 3, 1 };
   cout << solve(A) << endl;
}

輸入

{ 2, 1, 3, 1 }

輸出

1

更新於:2022年3月3日

122 次瀏覽

啟動您的職業生涯

完成課程後獲得認證

開始
廣告
© . All rights reserved.