diff --git a/solution/1700-1799/1710.Maximum Units on a Truck/README.md b/solution/1700-1799/1710.Maximum Units on a Truck/README.md index dbb767893437c..8cfa12bdc66e0 100644 --- a/solution/1700-1799/1710.Maximum Units on a Truck/README.md +++ b/solution/1700-1799/1710.Maximum Units on a Truck/README.md @@ -151,18 +151,13 @@ func maximumUnits(boxTypes [][]int, truckSize int) (ans int) { #### TypeScript ```ts -function maximumUnits(boxTypes: number[][], truckSize: number): number { - boxTypes.sort((a, b) => b[1] - a[1]); - let sum = 0; +export function maximumUnits(boxTypes: number[][], truckSize: number): number { + boxTypes.sort(([_, a], [__, b]) => b - a); let ans = 0; for (const [count, size] of boxTypes) { - if (sum + count < truckSize) { - ans += size * count; - sum += count; - } else { - ans += (truckSize - sum) * size; - break; - } + ans += Math.min(truckSize, count) * size; + truckSize -= count; + if (truckSize < 0) break; } return ans; } @@ -296,16 +291,13 @@ func maximumUnits(boxTypes [][]int, truckSize int) (ans int) { ```ts function maximumUnits(boxTypes: number[][], truckSize: number): number { - const cnt = new Array(1001).fill(0); - for (const [a, b] of boxTypes) { - cnt[b] += a; - } + boxTypes.sort(([_, a], [__, b]) => b - a); let ans = 0; - for (let b = 1000; b > 0 && truckSize > 0; --b) { - const a = cnt[b]; - if (a > 0) { - ans += b * Math.min(truckSize, a); - truckSize -= a; + for (const [count, size] of boxTypes) { + ans += Math.min(truckSize, count) * size; + truckSize -= count; + if (truckSize < 0) { + break; } } return ans; diff --git a/solution/1700-1799/1710.Maximum Units on a Truck/README_EN.md b/solution/1700-1799/1710.Maximum Units on a Truck/README_EN.md index b08b30b77e361..2ec2075f92b55 100644 --- a/solution/1700-1799/1710.Maximum Units on a Truck/README_EN.md +++ b/solution/1700-1799/1710.Maximum Units on a Truck/README_EN.md @@ -150,18 +150,13 @@ func maximumUnits(boxTypes [][]int, truckSize int) (ans int) { #### TypeScript ```ts -function maximumUnits(boxTypes: number[][], truckSize: number): number { - boxTypes.sort((a, b) => b[1] - a[1]); - let sum = 0; +export function maximumUnits(boxTypes: number[][], truckSize: number): number { + boxTypes.sort(([_, a], [__, b]) => b - a); let ans = 0; for (const [count, size] of boxTypes) { - if (sum + count < truckSize) { - ans += size * count; - sum += count; - } else { - ans += (truckSize - sum) * size; - break; - } + ans += Math.min(truckSize, count) * size; + truckSize -= count; + if (truckSize < 0) break; } return ans; } @@ -295,16 +290,13 @@ func maximumUnits(boxTypes [][]int, truckSize int) (ans int) { ```ts function maximumUnits(boxTypes: number[][], truckSize: number): number { - const cnt = new Array(1001).fill(0); - for (const [a, b] of boxTypes) { - cnt[b] += a; - } + boxTypes.sort(([_, a], [__, b]) => b - a); let ans = 0; - for (let b = 1000; b > 0 && truckSize > 0; --b) { - const a = cnt[b]; - if (a > 0) { - ans += b * Math.min(truckSize, a); - truckSize -= a; + for (const [count, size] of boxTypes) { + ans += Math.min(truckSize, count) * size; + truckSize -= count; + if (truckSize < 0) { + break; } } return ans; diff --git a/solution/1700-1799/1710.Maximum Units on a Truck/Solution.ts b/solution/1700-1799/1710.Maximum Units on a Truck/Solution.ts index 90a61161031e6..23c065e191195 100644 --- a/solution/1700-1799/1710.Maximum Units on a Truck/Solution.ts +++ b/solution/1700-1799/1710.Maximum Units on a Truck/Solution.ts @@ -1,13 +1,10 @@ function maximumUnits(boxTypes: number[][], truckSize: number): number { - boxTypes.sort((a, b) => b[1] - a[1]); - let sum = 0; + boxTypes.sort(([_, a], [__, b]) => b - a); let ans = 0; for (const [count, size] of boxTypes) { - if (sum + count < truckSize) { - ans += size * count; - sum += count; - } else { - ans += (truckSize - sum) * size; + ans += Math.min(truckSize, count) * size; + truckSize -= count; + if (truckSize < 0) { break; } }