주어진 배열에 대한 질문에 답하기 위한 문제에 대해 토론하십시오. 예를 들어 각 쿼리 인덱스에 대해 인덱스 왼쪽에서 1과 0의 수를 찾아야 합니다.
입력:arr[ ] ={ 0, 1, 1, 1, 0, 0, 0, 1, 0, 0}, 쿼리[ ] ={ 2, 4, 1, 0, 5 }출력:쿼리 1 :zeros =1,ones =1query 2:zeros =1,ones =3query 3:zeros =1,ones =0query 4:zeros =0,ones =0query 5:zeros =2,ones =3Input:arr[ ] ={ 0, 0, 1, 1, 1, 0, 1, 0, 0, 1 }, 쿼리[ ] ={ 3, 2, 6 }출력:쿼리 1:0 =2,원 =1쿼리 2:0 =2, 일 =0쿼리 3:0 =3, 일 =3
해결책을 찾기 위한 접근 방식
순진한 접근
이 문제에 대한 간단한 해결책은 배열을 통해 쿼리 인덱스로 이동하고 각 요소를 확인하는 것입니다. 0이면 0 카운터를 1만큼 증가시키고 그렇지 않으면 1 카운터를 1만큼 증가시킵니다.
예시
#include네임스페이스 std;int main(){ int nums[] ={1, 0, 0, 1, 1, 0, 0, 1, 0, 0}; 정수 쿼리[] ={ 2, 4, 1, 0, 5 }; int qsize =sizeof(쿼리) / sizeof(쿼리[0]); 정수 0 =0, 1 =0; // 각 쿼리를 실행하기 위한 루프. for(int i =0;i 출력
질의 1:0 =1,1 =1query 2:0 =2,one =2query 3:0 =0,ones =1query 4:0 =0,ones =0query 5:0 =2,ones =3사전>효율적인 접근
이전 접근 방식에서는 매번 0번째 인덱스에서 새 쿼리에 대해 1과 0을 계산했습니다.
또 다른 접근 방식은 먼저 모든 인덱스의 왼쪽에 있는 0과 1을 계산하여 배열에 저장하고 쿼리에 작성된 인덱스에 따라 답을 반환하는 것입니다.
예시
#include네임스페이스 std;int main(){ int nums[] ={1, 0, 0, 1, 1, 0, 0, 1, 0, 0}; 정수 쿼리[] ={ 2, 4, 1, 0, 5 }; 정수 n =sizeof(nums) / sizeof(nums[0]); 정수 [n][2]; 정수 0 =0, 1 =0; // nums 배열을 순회합니다. for (int i =0; i 출력
질의 1:0 =1,1 =1query 2:0 =2,ones =2query 3:0 =0,ones =1query 4:0 =0,ones =0query 5:0 =2,ones =3사전>결론
이 자습서에서는 주어진 배열의 각 쿼리에 대해 인덱스 왼쪽에 1과 0의 수를 반환하는 것에 대해 논의했습니다. 우리는 이 문제를 해결하기 위한 간단한 접근 방식과 효율적인 접근 방식에 대해 논의했습니다. 우리는 또한 C, Java, Python 등과 같은 프로그래밍 언어로 할 수 있는 이 문제에 대한 C++ 프로그램에 대해 논의했습니다. 이 튜토리얼이 도움이 되기를 바랍니다.