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
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP