1564. Put Boxes Into the Warehouse I
阿新 • • 發佈:2021-01-08
Lc-1564
categories: [LeetCode]
tags: [Greedy, medium]
1564. Put Boxes Into the Warehouse I
題目大意:
給定兩個陣列,一個代表盒子,一個代表倉庫,
倉庫和盒子中的元素都代表高度,寬度為一個unit
求出最多有多少個盒子可以放入倉庫
注意的是:盒子放入倉庫只能從倉庫左邊進入也就是0-index
盒子不能堆放,但可以隨意調整盒子進入倉庫的順序
解題思路:
這是一道典型的貪心演算法題, 首先我們需要對盒子的陣列進行排序找出最高的盒子 然後用for loop 開始將最高的盒子和倉庫中的每個倉庫從左到右一一比較 如果發現當前倉庫可以放下最高的盒子,那麼結果加一,然後將倉庫的下標挪到下一個 無論當前倉庫是否能放下當前最高的盒子,每次迴圈完,盒子的下標自動挪到下一個盒子 最後返回結果
注意:
None
複雜度:
Time Coplexity: O(NlogN + M)
Code示例:
class Solution { public int maxBoxesInWarehouse(int[] boxes, int[] warehouse) { Arrays.sort(boxes); int b = boxes.length-1; int ans = 0; for (int i = 0; i < warehouse.length && b >= 0;) { if (warehouse[i] >= boxes[b]) { ans++; i++; } b--; } return ans; } }