LeetCode - 169 - 求众数(majority-element)

栏目: IT技术 · 发布时间: 5年前

内容简介:LeetCode - 169 - 求众数(majority-element)

Create by jsliang on 2019-07-05 13:54:05
Recently revised in 2019-07-05 14:48:53

一 目录

不折腾的前端,和咸鱼有什么区别

| 目录 | | --- | | 一 目录 | | 二 前言 | | 三 解题 | |  3.1 解法 - Map() |

二 前言

  • 难度:简单

  • 涉及知识:位运算、数组、分治算法

  • 题目地址:https://leetcode-cn.com/problems/majority-element/

  • 题目内容

  1. 给定一个大小为 n 的数组,找到其中的众数。

  2. 众数是指在数组中出现次数大于  n/2  的元素。

  3. 你可以假设数组是非空的,并且给定的数组总是存在众数。

  4. 示例 1:

  5. 输入: [3,2,3]

  6. 输出: 3

  7. 示例 2:

  8. 输入: [2,2,1,1,1,2,2]

  9. 输出: 2

三 解题

小伙伴可以先自己在本地尝试解题,再回来看看 jsliang 的解题思路。

3.1 解法 - Map()

  • 解题代码

  1. var majorityElement = function(nums) {

  2. let map = new Map();

  3. for (let i = 0; i < nums.length; i++) {

  4. if (map.get(nums[i]) !== undefined) {

  5. map.set(nums[i], map.get(nums[i]) + 1);

  6. if (map.get(nums[i]) > nums.length / 2) {

  7. return nums[i];

  8. }

  9. } else {

  10. map.set(nums[i], 1);

  11. if (map.get(nums[i]) > nums.length / 2) {

  12. return nums[i];

  13. }

  14. }

  15. }

  16. };

  • 执行测试

  1. nums: [2,2,1,1,1,2,2]

  2. return: 2

  • LeetCode Submit

  1. Accepted

  2. 44/44 cases passed (96 ms)

  3. Your runtime beats 83.27 % of javascript submissions

  4. Your memory usage beats 24.14 % of javascript submissions (37.7 MB)

  • 知识点

  1. Map:保存键值对。任何值(对象或者原始值) 都可以作为一个键或一个值。 Map 详细介绍

  • 解题思路

首先Map() 作为一个 有记忆功能Object,在 LeetCode 中经常以哈希算法的形式出现,是个非常实用的 API,小伙伴们可以尝试多使用几次,记住 Map() 的使用技巧。

然后jsliang 讲讲使用 Map() 的解题思路:

  1. 通过 for() 遍历一遍 nums

  2. 判断 nums 中的每个元素,如果在 Map() 中有存在,则将其出现次数 + 1,如果它的出现次数已经超过 nums.length/2,那么它就是众数。

  3. 然后,如果它没在 Map() 中存在,那么就直接存为 1,同时给个判断是否出现次数超过 nums.length/2,这是预防如果数组为 [1] 的情况。

这样,我们就完成了这道题的破解。

  • 进一步思考

除了 Map(),可能还有其他方法,这就需要小伙伴们去探索啦~


不折腾的前端,和咸鱼有什么区别!

LeetCode - 169 - 求众数(majority-element)

jsliang 会每天更新一道 LeetCode 题解,从而帮助小伙伴们夯实原生 JS 基础,了解与学习算法与数据结构。

扫描上方二维码,关注 jsliang 的公众号,让我们一起折腾!

LeetCode - 169 - 求众数(majority-element)

jsliang 的文档库 由 梁峻荣 采用 知识共享 署名-非商业性使用-相同方式共享 4.0 国际 许可协议进行许可。
基于https://github.com/LiangJunrong/document-library上的作品创作。
本许可协议授权之外的使用权限可以从 https://creativecommons.org/licenses/by-nc-sa/2.5/cn/ 处获得。



以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

从零开始做产品经理

从零开始做产品经理

萧七公子 / 中国华侨出版社 / 2016-12-1 / 27.9

《从零开始做产品经理:产品经理的第一本书》根据产品经理的能力需求与成长体系,共分为八章内容,从了解产品开始,到挖掘用户需求、进行产品设计、管理团队、进行项目管理、产品运营、把握产品的生命周期,以及产品经理的成长路径,全面阐释了产品经理的修炼之道。《从零开始做产品经理:产品经理的第一本书》书中信息量大,图文并茂,论点与论据相得益彰,并且融合了丰富的案例与故事,使得整个阅读过程妙趣横生而且迅速开“悟道......一起来看看 《从零开始做产品经理》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

URL 编码/解码
URL 编码/解码

URL 编码/解码