. Die meisten gewinnorientierten Arbeiten

王林
Freigeben: 2024-07-18 06:44:44
Original
976 Leute haben es durchsucht

. Most Profit Assigning Work

826. Die meiste gewinnbringende Arbeit

Mittel

Sie haben n Jobs und m Arbeiter. Sie erhalten drei Arrays: Schwierigkeit, Gewinn und Arbeiter, wobei:

  • Schwierigkeit[i] und Gewinn[i] sind die Schwierigkeit und der Gewinn der itenArbeit, und
  • worker[j] ist die Fähigkeit des jth Workers (d. h. der jth Worker kann höchstens einen Job mit Schwierigkeiten abschließen, worker[j]).

Jedem Arbeitnehmer kann höchstens ein Auftrag zugewiesen werden, ein Auftrag kann jedoch mehrmals erledigt werden.

  • Wenn beispielsweise drei Arbeiter den gleichen Job versuchen, der 1 US-Dollar einbringt, beträgt der Gesamtgewinn 3 US-Dollar. Wenn ein Arbeiter keine Arbeit erledigen kann, beträgt sein Gewinn 0 $.

Geben Sie den maximalen Gewinn zurück, den wir nach der Zuweisung der Arbeitskräfte zu den Jobs erzielen können.

Beispiel 1:

  • Eingabe: Schwierigkeit = [2,4,6,8,10], Gewinn = [10,20,30,40,50], Arbeiter = [4,5,6,7]
  • Ausgabe: 100
  • Erklärung: Den Arbeitern werden Jobs mit der Schwierigkeit [4,4,6,6] zugewiesen und sie erhalten separat einen Gewinn von [20,20,30,30].

Beispiel 2:

  • Eingabe: Schwierigkeit = [85,47,57], Gewinn = [24,66,99], Arbeiter = [40,25,25]
  • Ausgabe: 0

Einschränkungen:

  • n == schwierigkeit.länge
  • n == profit.length
  • m == worker.length
  • 1 <= n, m <= 104
  • 1 <= Schwierigkeit[i], Gewinn[i], Arbeiter[i] <= 105

Lösung:

class Solution {

    /**
     * @param Integer[] $difficulty
     * @param Integer[] $profit
     * @param Integer[] $worker
     * @return Integer
     */
    function maxProfitAssignment($difficulty, $profit, $worker) {
        $ans = 0;
        $jobs = array();

        for ($i = 0; $i < count($difficulty); ++$i) {
            $jobs[] = array($difficulty[$i], $profit[$i]);
        }

        sort($jobs);
        sort($worker);

        $i = 0;
        $maxProfit = 0;

        foreach ($worker as $w) {
            for (; $i < count($jobs) && $w >= $jobs[$i][0]; ++$i) {
                $maxProfit = max($maxProfit, $jobs[$i][1]);
            }
            $ans += $maxProfit;
        }

        return $ans;
    }
}




Kontaktlinks

  • LinkedIn
  • GitHub

Das obige ist der detaillierte Inhalt von. Die meisten gewinnorientierten Arbeiten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage