Heim  >  Artikel  >  Backend-Entwicklung  >  Übersetzen Sie Folgendes ins Chinesische: C++-Abfrage zur Beantwortung der Anzahl der Einsen und Nullen links von einem bestimmten Index

Übersetzen Sie Folgendes ins Chinesische: C++-Abfrage zur Beantwortung der Anzahl der Einsen und Nullen links von einem bestimmten Index

王林
王林nach vorne
2023-08-29 20:29:05590Durchsuche

将以下内容翻译为中文:C++ 查询以回答给定索引左侧的1和0的数量

Besprechen Sie eine Frage, um eine Abfrage zu einem bestimmten Array zu beantworten. Beispielsweise müssen wir für jeden Abfrageindex die Anzahl der Einsen und Nullen links vom Index ermitteln.

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

Weg, eine Lösung zu finden

Naiver Weg

Eine einfache Möglichkeit, dieses Problem zu lösen, besteht darin, das Array zum Index der Abfrage zu durchlaufen und jedes Element zu überprüfen. Wenn es 0 ist, erhöhen Sie den Nullzähler um 1, andernfalls erhöhen Sie den Nullzähler 1.

Beispiel

#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;
}

Ausgabe

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

Effiziente Methode

Bei der vorherigen Methode beginnen wir jedes Mal mit dem 0. Index, um die 1 und 0 für die neue Abfrage zu berechnen.

Eine andere Möglichkeit besteht darin, zuerst 0 und 1 zu berechnen. erscheint links von jedem Index, speichert sie in einem Array und gibt die Antwort basierend auf dem in der Abfrage geschriebenen Index zurück.

Beispiel

#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;
}

Ausgabe

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

Fazit

In diesem Tutorial haben wir die Rückgabe der Anzahl der Einsen und Nullen links vom Index für jede Abfrage in einem bestimmten Array besprochen. Wir haben einfache und effektive Möglichkeiten zur Lösung dieses Problems besprochen. Wir haben auch C++-Programme zur Lösung dieses Problems besprochen, die wir mithilfe von Programmiersprachen wie C, Java, Python usw. implementieren können. Wir hoffen, dass Sie dieses Tutorial hilfreich fanden.

Das obige ist der detaillierte Inhalt vonÜbersetzen Sie Folgendes ins Chinesische: C++-Abfrage zur Beantwortung der Anzahl der Einsen und Nullen links von einem bestimmten Index. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen