题目链接101010. 容量最小的箱子简单算法原理解法遍历1ms击败97.07%时间复杂度O(N)①初始化映射数组创建长度 101 的数组 a其中下标对应 nums 元素值值对应该值在 nums 中的最小下标初始值填 -1②记录最小下标遍历 nums为每个值记录其在 nums 中出现的最小下标存入 a 对应位置③查找目标下标从 it 开始遍历 a返回第一个值 ≠ -1 的元素即符合条件的最小下标④兜底返回未找到符合条件的值则返回 -1优化版1ms击败97.07%时间复杂度O(N)也可以用一个变量minC记录能装下箱子的最少容量在遍历过程中遇到更小的就更新同时更新其下标Java代码class Solution { public int minimumIndex(int[] nums, int it) { int nnums.length; //存值下标 int[] anew int[101]; Arrays.fill(a,-1); for(int i0;in;i){//遍历每个值充当下标 if(a[nums[i]]!-1) a[nums[i]]Math.min(a[nums[i]],i); else a[nums[i]]i; } for(int iit;i101;i) if(a[i]!-1) return a[i]; return -1; } }class Solution { //优化版 public int minimumIndex(int[] nums, int it) { int minC0x3f3f3f3f; int ret-1; for(int i0;inums.length;i){ //获取容量 int cnums[i]; //更新容量能装下也比之前的容量小 if(citcminC){ minCc; reti; } } return ret; } }