Q1. Minimum Capacity Box

練習日期:2026-03-08

難度:Easy

類型:Array、Weekly Contest 492

📘 題目敘述

你會拿到一個整數陣列 capacity,其中 capacity[i] 代表第 i 個箱子的容量,以及一個整數 itemSize 代表物品的大小。

如果 capacity[i] >= itemSize,則第 i 個箱子可以裝下該物品。

請回傳能裝下物品的箱子中,容量最小的那個箱子索引。如果有多個箱子容量同樣最小,回傳索引最小的那個。如果沒有任何箱子能裝下物品,回傳 -1

條件限制

  • 1 <= capacity.length <= 100
  • 1 <= capacity[i] <= 100
  • 1 <= itemSize <= 100

🧠 解題思路

直接線性掃描一遍 capacity,維護目前最小可用容量與對應索引。若遇到 capacity[i] == itemSize,可立刻回傳,因為這已是可行最小值。

所有變數

  • pos:目前找到最小可用容量的索引,初始 -1
  • cap:目前最小可用容量,初始 INT_MAX

🪜 主要流程步驟

1. 初始化

pos = -1cap = INT_MAX

2. 掃描每個箱子

  • capacity[i] == itemSize:直接回傳 i
  • capacity[i] > itemSize:若更小則更新 cappos

3. 回傳答案

掃描後回傳 pos

⏱️ 複雜度

  • 時間複雜度:O(n)
  • 空間複雜度:O(1)

💻 程式碼實作

class Solution {
public:
    int minimumIndex(vector<int>& capacity, int itemSize) {
        int pos = -1;
        int cap = INT_MAX;
        for (int i = 0; i < capacity.size(); i++) {
            if (capacity[i] > itemSize && cap > capacity[i]) {
                cap = capacity[i];
                pos = i;
            } else if (capacity[i] == itemSize) {
                return i;
            }
        }
        return pos;
    }
};

https://leetcode.com/contest/weekly-contest-492/problems/minimum-capacity-box/

作者:scottnick
撰寫日期:2026-03-08
類別:
原文連結:https://scottnick.github.io/cpp-notes/contests/weekly-contest-492/q1-minimum-capacity-box.html