C++ 程式碼查詢最小算術平均偏差


假設我們有一個包含 3 個元素的陣列 A。如果 A[0] + A[2] = 2 * A[1],則 A[1] 是兩個元素 A[0] 和 A[3] 的算術平均值。三個數字 d(A[0], A[1], A[2]) 的算術平均值偏差為 |A[0] + A[2] - 2*A[1]|。我們可以執行以下操作任意次:從索引 {0, 1, 2} 中選擇兩個索引 i 和 j,使得 i != j,然後將 A[i] 加 1 並將 A[j] 減 1。我們必須找到算術平均偏差的最小值。

所以,如果輸入類似於 A = [2, 2, 6],那麼輸出將是 1,因為如果我們減少 A[0] 並增加 A[1],則陣列將變為 [1, 3, 6],因此平均偏差將為 |1 + 6 - 2 * 3| = 1。

步驟

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

a := A[0]
b := A[1]
c := A[2]
return minimum of 1 and (((a + c - 2 * b) mod 3 + 3) mod 3)

示例

讓我們看看以下實現以獲得更好的理解:

#include <bits/stdc++.h>
using namespace std;
int solve(vector<int> A){
   int a = A[0];
   int b = A[1];
   int c = A[2];
   return min(1, ((a + c - 2 * b) % 3 + 3) % 3);
}
int main(){
   vector<int> A = { 2, 2, 6 };
   cout << solve(A) << endl;
}

輸入

{ 2, 2, 6 }

輸出

1

更新日期: 2022-03-11

199 次瀏覽

開啟你的 職業生涯

完成課程以獲得認證

入門
廣告