[Python] [c ++] halbiert (* _bound) in umgekehrter (absteigender) Liste

Bisect unterstützt keine absteigende Liste, also habe ich es geschafft. https://codeday.me/jp/qa/20190215/252510.html Es gibt einige, aber ich frage mich, ob es möglich ist, sie selbst umzusetzen.

from bisect import*

cargo=[1,4,6,43,7,3,6,3,7,32]
length=len(cargo)
cargo_ascending =[1,3,3,4,6,6,7,7,32,43]
cargo_descending=[43,32,7,7,6,6,4,3,3,1]

#cargo_Ich muss es nicht als absteigendes Argument betrachten, aber vorerst
def bisect_reverse_right(cargo_descending,x,lb=0,ub=length):  
    return length-bisect_left(cargo_ascending,x,length-ub,length-lb)

def bisect_reverse_left(cargo_descending,x,lb=0,ub=length):
    return length-bisect_right(cargo_ascending,x,length-ub,length-lb)

print(bisect_left(cargo_ascending,7))  #6
print(bisect_right(cargo_ascending,7))  #8
print(bisect_left(cargo_ascending,43))  #9
print(bisect_right(cargo_ascending,43))  #10

print(bisect_reverse_left(cargo_descending,7))  #2
print(bisect_reverse_right(cargo_descending,7))  #4
print(bisect_reverse_left(cargo_descending,43))  #0
print(bisect_reverse_right(cargo_descending,43))  #1
int bisect_reverse_left(vector<int>cargo_descending,int x,int lb=0,int ub=length){
    return length-(upper_bound(cargo_ascending.begin()+length-ub,cargo_ascending.begin()+length-lb,x)-cargo_ascending.begin());
}
int bisect_reverse_right(vector<int>cargo_descending,int x,int lb=0,int ub=length){
    return length-(lower_bound(cargo_ascending.begin()+length-ub,cargo_ascending.begin()+length-lb,x)-cargo_ascending.begin());
}

Da ich einen Kommentar erhalten habe, werde ich Ihnen eine Version mit der Vergleichsfunktion geben

#include <algorithm>
#include <iostream>
#include <vector>

int length;

//Das ist Fracht_Nur absteigend erforderlich
int bisect_reverse_left(std::vector<int>cargo_descending,int x,int lb=0,int ub=length){
    return *std::upper_bound(cargo_descending.begin()+lb,cargo_descending.begin()+ub, x, [](autoa,autob){returna>b;});
}
int bisect_reverse_right(std::vector<int>cargo_descending,int x,int lb=0,int ub=length){
    return *std::lower_bound(cargo_descending.begin()+lb,cargo_descending.begin()+ub, x, [](autoa,autob){returna>b;});
}



int main() {
    std::vector<int> v = {5, 4, 3, 2, 2, 1};
    length=v.size();
    std::cout<<bisect_reverse_left(v,3)<<std::endl;  //2
    std::cout<<bisect_reverse_right(v,3)<<std::endl;  //3
}

Recommended Posts

[Python] [c ++] halbiert (* _bound) in umgekehrter (absteigender) Liste
Sortierte Liste in Python
Weiter Python in C-Sprache
Die findähnliche Sache der Liste in Python
C-API in Python 3
Strings in Python umkehren
Erweitern Sie Python in C ++ (Boost.NumPy)
Binäre Suche in Python / C ++
Absteigende Sorte mit Mongodb in Python
Abrufen von Listenelementen in Python
Extrahieren Sie mehrere Listenduplikate in Python
Unterschied zwischen list () und [] in Python
[Python] Verwalten Sie Funktionen in einer Liste
Löse ABC036 A ~ C mit Python
So verpacken Sie C in Python
Löse ABC037 A ~ C mit Python
Löschen Sie mehrere Elemente in der Python-Liste
Schreiben Sie einen C-Sprach-Unit-Test in Python
[Python] Ermittelt den Rang der Werte in der Liste in aufsteigender / absteigender Reihenfolge
Linkliste (list_head / queue) in C-Sprache
Zeigen Sie eine Liste der Alphabete in Python 3 an
Algorithmus in Python (ABC 146 C Dichotomie
Implementieren Sie den FIR-Filter in Python und C.
Nehmen Sie die logische Summe von List in Python (Zip-Funktion)
Unterschied zwischen Anhängen und + = in der Python-Liste
Schreiben Sie die O_SYNC-Datei in C und Python
Laden Sie Bilder von der URL-Liste in Python herunter
Zusammenfassung der integrierten Methoden usw. der Python-Liste
Ruft die EDINET-Codeliste in Python ab
Führen Sie Python in C ++ unter Visual Studio 2017 aus
[Python] Verstehen Sie die Slice-Operation der Liste in Sekunden
Asynchrone Verarbeitung in Python: Asyncio-Reverse-Referenz
Verwendung der C-Bibliothek in Python
Verwenden Sie Python für formatierte Ausgaben wie C / C ++ printf
[Python] Sortieren Sie die Liste von pathlib.Path in natürlicher Reihenfolge
So löschen Sie einen Taple in einer Liste (Python)
So generieren Sie eine Sequenz in Python und C ++
Kopieren Sie die Liste in Python
Boost.NumPy Tutorial zum Erweitern von Python in C ++ (Übung)
Anzeigen von Arzneimittelbewertungen mithilfe von Listen in Python
Ich habe versucht, ein Python 3-Modul in C hinzuzufügen
Wählen Sie zufällig Elemente aus der Liste (Array) in Python aus
[Python] Manipulation von Elementen in einer Liste (Array) [Sortieren]
Erstes tiefes Lernen in C # - Einführung in Python implementieren-
Reduzieren Sie eine unregelmäßige zweidimensionale Standardliste in Python
So entfernen Sie doppelte Elemente in der Python 3-Liste
Sortieren Sie die Liste der Tupel in Python, indem Sie die aufsteigende / absteigende Reihenfolge mehrerer Schlüssel angeben
Quadtree in Python --2
Python in der Optimierung
Metaprogrammierung mit Python
Python 3.3 mit Anaconda
Geokodierung in Python
SendKeys in Python
Metaanalyse in Python
Unittest in Python
Epoche in Python
Zwietracht in Python
Deutsch in Python
nCr in Python
N-Gramm in Python
Programmieren mit Python