討論一個問題來回答對給定陣列的查詢。例如,對於每個查詢索引,我們需要尋找索引左側的 1 和 0 的數量。
Input: arr[ ] = { 0, 1, 1, 1, 0, 0, 0, 1, 0, 0}, queries[ ] = { 2, 4, 1, 0, 5 } Output: query 1: zeros = 1,ones = 1 query 2: zeros = 1,ones = 3 query 3: zeros = 1,ones = 0 query 4: zeros = 0,ones = 0 query 5: zeros = 2,ones = 3 Input: arr[ ] = { 0, 0, 1, 1, 1, 0, 1, 0, 0, 1 }, queries[ ] = { 3, 2, 6 } Output: query 1: zeros = 2,ones = 1 query 2: zeros = 2,ones = 0 query 3: zeros = 3,ones = 3
解決這個問題的簡單方法是遍歷數組到查詢的索引並檢查每個元素;如果為0,則將零計數器加1,否則將個計數器加1。
#include <bits/stdc++.h> using namespace std; int main(){ int nums[] = {1, 0, 0, 1, 1, 0, 0, 1, 0, 0}; int queries[] = { 2, 4, 1, 0, 5 }; int qsize = sizeof(queries) / sizeof(queries[0]); int zeros=0,ones=0; // loop for running each query. for(int i = 0;i<qsize;i++){ //counting zeros and ones for(int j = 0;j<queries[i];j++){ if(nums[j]==0) zeros++; else ones++; } cout << "\nquery " << i+1 << ": zeros = " << zeros << ",ones = " << ones; zeros=0; ones=0; } return 0; }
query 1: zeros = 1,ones = 1 query 2: zeros = 2,ones = 2 query 3: zeros = 0,ones = 1 query 4: zeros = 0,ones = 0 query 5: zeros = 2,ones = 3
在先前的方法中,每次我們都從第0 個索引開始計算新查詢的1 和0。
另一種方法是先計算 0 和 1。出現在每個索引的左側,將它們儲存在陣列中,並根據查詢中寫入的索引傳回答案。
#include <bits/stdc++.h> using namespace std; int main(){ int nums[] = {1, 0, 0, 1, 1, 0, 0, 1, 0, 0}; int queries[] = { 2, 4, 1, 0, 5 }; int n = sizeof(nums) / sizeof(nums[0]); int arr[n][2]; int zeros = 0, ones = 0; // traverse through the nums array. for (int i = 0; i < n; i++) { // store the number of zeros and ones in arr. arr[i][0] = zeros; arr[i][1] = ones; // increment variable according to condition if (nums[i]==0) zeros++; else ones++; } int qsize = sizeof(queries) / sizeof(queries[0]); for (int i = 0; i < qsize; i++) cout << "\nquery " << i+1 << ": zeros = " << arr[queries[i]][0] << ",ones =" << arr[queries[i]][1]; return 0; }
query 1: zeros = 1,ones =1 query 2: zeros = 2,ones =2 query 3: zeros = 0,ones =1 query 4: zeros = 0,ones =0 query 5: zeros = 2,ones =3
在本教程中,我們討論了為給定數組中的每個查詢返回索引左側的1 和0 的數量。我們討論了解決這個問題的簡單方法和有效方法。我們也討論了解決此問題的 C 程序,我們可以使用 C、Java、Python 等程式語言來實作。我們希望本教學對您有所幫助。
以上是將以下內容翻譯為中文:C++ 查詢以回答給定索引左側的1和0的數量的詳細內容。更多資訊請關注PHP中文網其他相關文章!