尋找非空且和為偶數的子串長度的 C++ 程式


假設我們有一個包含 n 個元素的陣列 A。我們必須找到其元素的一個非空子集,其元素之和為偶數。如果沒有這樣的子集,則返回 -1。

因此,如果輸入類似於 A = [1, 3, 7],則輸出將是 2,因為 [1, 3] 的和為 4。

步驟

為此,我們將按照以下步驟進行 −

n := size of A
for initialize i := 0, when i < n, update (increase i by 1), do:
   if A[i] mod 2 is same as 0, then:
      k := i + 1
if n is 1 AND k is 0, then:
   return -1
otherwise when k is not equal to 0, then:
   return 1
Otherwise
   return 2

示例

讓我們看看以下實現來加深理解 −

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

int solve(vector<int> A) {
   long n = A.size(), k = 0;
   for (long i = 0; i < n; i++) {
      if (A[i] % 2 == 0) {
         k = i + 1;
      }
   }
   if (n == 1 & k == 0) {
      return -1;
   }
   else if (k != 0) {
      return 1;
   } else {
      return 2;
   }
}
int main() {
   vector<int> A = { 1, 3, 7 };
   cout << solve(A) << endl;
}

輸入

{ 1, 3, 7 }

輸出

2

更新日期: 2022-03-04

108 次瀏覽

開啟您的 職業 道路

透過完成課程獲得認證

開始
廣告
© . All rights reserved.