執行給定操作後值為 1 的索引數量


我們的目標是透過確定連續操作後值為 1 的索引數量來成功應對提出的問題。我們計劃透過利用 C++ 作為我們首選的程式語言,以順序和有條理的方式執行每個操作來完成此任務。

然而,為了實現永久性解決方案,我們必須制定一個有效且編碼適當的演算法藍圖。

語法

為了更好地為演算法做好準備。建議熟悉編碼語法。以下程式碼片段將使用如下所示的特定方法 -

// Syntax for the method used in the following codes
int countIndicesWithOne(const vector& nums) {
   // Implementation of the method
}

演算法

為了解決這個問題,我們將遵循一個分步演算法。演算法方法將幫助我們系統地執行所需的操作並計算值為 1 的索引。以下步驟概述了演算法 -

  • 初始化一個變數,我們稱之為 count,以跟蹤值為 1 的索引計數。

  • 遍歷給定的陣列 nums。

  • 對於 nums 中的每個元素,執行以下操作 -

  • 如果元素等於 1,則將 count 變數加 1。

  • 遍歷所有元素後返回 count 的值。

  • 有了定義的演算法,讓我們現在回顧兩種不同的方法來熟練地解決手頭的問題。

方法

現在,讓我們討論兩種不同的方法 -

方法 1:線性掃描

為了計算陣列中有多少個索引包含值為 1,我們將使用一個基本的線性掃描過程。透過系統地遍歷所有索引,並精確定位那些僅包含一個儲存為“1”的元素的索引,可以製表一個準確的最終計數。下面提供的片段概述了此解決方案的一部分 -

示例

#include <iostream>
#include <vector>

using namespace std;

int countIndicesWithOne(const vector<int>& nums) {
   int count = 0;
   for (int num : nums) {
      if (num == 1) {
         count++;
      }
   }
   return count;
}

int main() {
   vector<int> nums = {1, 0, 1, 1, 0, 1};
   int result = countIndicesWithOne(nums);
   cout << "Count of indices with value 1: " << result << endl;
   return 0;
}

輸出

Count of indices with value 1: 4

解釋

計算陣列中值為 1 的索引的初始方法需要使用線性掃描方法。該過程首先初始化“count”,它在整個程式碼中充當計數器變數。接下來,透過 for 迴圈構造開始遍歷陣列中包含的每個元素。在此探索階段遇到的每個元素,我們都會測試其值是否等於 1,然後在出現此類情況時相應地增加 count。在檢查我們在方法一中最初宣告的陣列中包含的所有單個元素後,我們將滿足我們標準的每個例項彙總到“count”中,最終在完成時返回,同時為解決此類問題提供了一種簡單而可靠的方法,同時降低了複雜性;在嘗試開發想法時非常理想。

方法 2:位操作

計算索引中 1 的流行率的一種有效方法是利用各種位操作方法,這有助於我們快速且系統地進行跟蹤。使用此特定技術在同時管理多個整數時非常有用。檢視以下為演示如何使用我們的創新方法將所有內容整合在一起而設計的示例程式碼 -

示例

#include <iostream>
#include <vector>

using namespace std;

int countIndicesWithOne(const vector<int>& nums) {
   int count = 0;
   for (int num : nums) {
      count += __builtin_popcount(num);
   }
   return count;
}

int main() {
   vector<int> nums = {1, 0, 1, 1, 0, 1};
   int result = countIndicesWithOne(nums);
   cout << "Count of indices with value 1: " << result << endl;
   return 0;
}

輸出

Count of indices with value 1: 4

解釋

我們的第二種方法使用位操作技術來成功計算輸入陣列中多少個索引的值等於 1。這是透過初始化一個名為`count`的變數來完成的,其目的是跟蹤有多少個值被計為具有等於 1 的值。與我們的第一種方法類似,我們使用 for 迴圈遍歷陣列中的所有元素。我們應用了一種有效的方法,使用“__builtin_popcount”而不是直接條件檢查“if (value==1)”,透過計算該元素下二進位制表示中僅設定的位或 1 並將其迭代地新增到我們之前初始化的變數“count”中。一旦檢查了當前迴圈中的所有元素/,我們將其最終索引“one”值位置(由“counts”表示)返回。總之,由於它也使用了按位運算,因此我們可以得出結論,此方法在處理陣列時為我們提供了更好的最佳化解決方案。

結論

我們使用既定的程式進行了全面的調查,以解決計算值為 1 的 C++ 索引數量的艱鉅任務。我們熟練地展示了兩種高效的方法 - 線性掃描和位操作 - 以及每種策略的功能程式碼,這些程式碼可以輕鬆地整合到您的專案中。我們的方法包括定義所需的語法和演算法以制定這些方法。透過使用這些技術,您將能夠以敏銳的準確性計算所需的索引,並在多種情況下擴充套件此知識。

更新於: 2023-07-25

73 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始
廣告