주어진 배열에 대한 쿼리에 답하기 위한 질문에 대해 토론하세요. 예를 들어, 각 쿼리 인덱스에 대해 인덱스 왼쪽에 있는 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인지 확인한 다음 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, Java, Python 등과 같은 프로그래밍 언어를 사용하여 구현할 수 있는 C++ 프로그램에 대해서도 논의했습니다. 이 튜토리얼이 도움이 되었기를 바랍니다.
위 내용은 다음을 중국어로 번역하세요: 주어진 인덱스 왼쪽에 있는 1과 0의 수에 답하는 C++ 쿼리의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!