news 2026/6/10 15:06:30

Leetcode 剑指 Offer II 158. 库存管理 II

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Leetcode 剑指 Offer II 158. 库存管理 II

题目难度: 简单

原题链接

今天继续更新 Leetcode 的剑指 Offer(专项突击版)系列, 大家在公众号算法精选里回复剑指offer2就能看到该系列当前连载的所有文章了, 记得关注哦~

题目描述

仓库管理员以数组 stock 形式记录商品库存表。stock[i] 表示商品 id,可能存在重复。请返回库存表中数量大于 stock.length / 2 的商品 id。

示例 1:

  • 输入:stock = [6, 1, 3, 1, 1, 1]
  • 输出:1

提示:

  • 1 <= stock.length <= 50000
  • 给定数组为非空数组,且存在结果数字

题目思考

  1. 如何不使用额外空间?
  2. 如果题目不保证一定存在多数元素又该怎么办?

解决方案

思路
  • 一个最简单的思路是用一个计数字典存每个数字的出现次数, 找最大的那个即可, 但这需要额外的空间, 不是面试官心目中的理想答案
  • 重新分析题目, 某个数字出现超过一半, 那意味着其他数字的数目之和都小于它, 如果我们将这些不同数字进行两两抵消, 那么最后剩余的那个数字一定是超过一半的那个数字, 这就引出了下面的思路:
    1. 维护一个当前候选者, 以及当前它的计数, 初始化就是数组头一个数字, 计数为 1
    2. 从第二个数字开始遍历数组, 如果当前数字等于候选者, 那么计数值加 1, 否则就减 1 表示抵消了一个数字
    3. 如果此时计数小于 0 的话, 就说明之前的候选者这个时候要被淘汰了, 因为它已经被抵消光了. 所以就重新选择当前的数字作为新的候选者, 同时重置计数值为 1.
    4. 这样最后剩余的那个候选者一定是最终结果, 因为此题的前提是一定存在这样的数字
  • 当然, 如果题目不保证一定存在多数元素, 那么我们在得到最终候选者之后, 需要重新遍历一遍数组并累加其计数, 确保其计数超过一半, 不然的话就说明整个数组没有多数元素. 例如数组[1,2,3], 利用此方法得到的最终候选者为 3, 但它并不是多数元素, 只是恰好最后一个被选出来的候选者而已.
复杂度
  • 时间复杂度O(N)
    • 只需要遍历数组一遍
  • 空间复杂度O(1)
    • 只使用了几个变量
代码
classSolution:definventoryManagement(self,stock:List[int])->int:# 初始化候选者和计数res=stock[0]cnt=1forxinstock[1:]:ifx==res:# 当前元素等于候选者, 计数值+1cnt+=1else:# 否则计数值-1cnt-=1ifcnt<0:# 如果计数值小于0的话, 就说明之前保存的候选者现在被淘汰了, 将当前元素变为新的候选者, 并重置计数值为1res=x cnt=1returnres

大家可以在下面这些地方找到我~😊

我的 GitHub

我的 Leetcode

我的 CSDN

我的知乎专栏

我的头条号

我的牛客网博客

我的公众号: 算法精选, 欢迎大家扫码关注~😊

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/8 23:43:13

学术探险家的秘密武器:书匠策AI解锁本科论文写作新次元

在学术探索的浩瀚宇宙中&#xff0c;本科论文写作如同一次星际穿越&#xff0c;既需要精准导航避开黑洞陷阱&#xff0c;又需要高效引擎突破时间桎梏。当传统写作模式陷入"选题撞车-文献迷航-逻辑断层"的恶性循环时&#xff0c;一款名为书匠策AI的智能工具正以"…

作者头像 李华
网站建设 2026/6/6 6:14:06

用机器学习开展因果推断研究,核心思路其实很简单

Nature、NEJM、Lancet等顶级期刊近年来发表的研究中&#xff0c;因果推断方法的应用呈爆发式增长。相关性分析不再是期刊编辑的宠儿。顶级期刊越来越青睐能够揭示因果关系的研究。而因果推断&#xff0c;正是连接数据与因果关系的桥梁&#xff01;你是否也被这样的问题困扰&…

作者头像 李华
网站建设 2026/6/10 19:57:44

看似 “捡漏” 的诱饵:地产经纪人的对比效应策略

为什么地产经纪人常常带客户看两栋差不多完全一样的房子&#xff0c;但其中一栋却比另一栋既便宜、环境又好&#xff1f;看似 “捡漏” 的诱饵&#xff1a;地产经纪人的对比效应策略地产经纪人带客户看 “差不多但更划算” 的房子&#xff0c;本质是利用行为经济学中的对比效应…

作者头像 李华
网站建设 2026/6/9 11:24:37

汽车制造行业CMS如何集成UEDITOR实现WORD公式自动上传?

一个C#程序员的UEditorWord导入奇幻漂流&#xff1a;从.NET到Vue的魔幻联动 第一章&#xff1a;需求降临——老板的"简单"需求 "小王啊&#xff0c;咱们后台编辑器得加个Word导入功能&#xff0c;要保留格式和图片啊&#xff01;“老板轻描淡写的一句话&#…

作者头像 李华
网站建设 2026/6/10 16:50:33

国产化替代中,百度富文本编辑器支持哪些格式的截图粘贴?

企业网站后台管理系统富文本编辑器Word集成解决方案评估与实施报告 项目负责人&#xff1a;XXX 日期&#xff1a;2023-XX-XX 一、需求背景分析 当前集团企业网站后台管理系统存在以下核心需求&#xff1a; 需要实现Word内容完美粘贴&#xff08;保留所有样式和特殊元素&…

作者头像 李华