私人可以做org后缀网站吗/浏览器如何推广自己网站
仓库管理员以数组 stock
形式记录商品库存表。stock[i]
表示商品 id
,可能存在重复。请返回库存表中数量大于 stock.length / 2
的商品 id
。
示例 1:
输入:stock = [6, 1, 3, 1, 1, 1] 输出:1
LCR 158. 库存管理 II - 力扣(LeetCode)
用一个桶,遍历数组,出现一次就++,大于1/2说明只可能有一个数字,每次++的时候检查一下是否超了,如果超了,直接return就行。
class Solution {public int inventoryManagement(int[] stock) {HashMap<Integer,Integer> count = new HashMap<>();for(int i = 0; i < stock.length; i++){count.put(stock[i],count.getOrDefault(stock[i],0) + 1);}// 找到频率超过一半的元素for (int i = 0; i < stock.length; i++) {if (count.get(stock[i]) > stock.length / 2) {return stock[i];}}return 0;}
}
还有一种效率更高的方法:摩尔投票法
class Solution {public int inventoryManagement(int[] stock) {int x = 0, votes = 0, count = 0;for(int num : stock){if(votes == 0) x = num;votes += num == x ? 1 : -1;}// 验证 x 是否为众数for(int num : stock)if(num == x) count++;return count > stock.length / 2 ? x : 0; // 当无众数时返回 0}
}