From 0b4166e17f4e0803267e6a116b7297b6fceac44f Mon Sep 17 00:00:00 2001 From: Cygra Date: Wed, 14 Apr 2021 16:39:54 +0800 Subject: [PATCH] =?UTF-8?q?169.=20=E5=A4=9A=E6=95=B0=E5=85=83=E7=B4=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...32\346\225\260\345\205\203\347\264\240.md" | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 "0169. \345\244\232\346\225\260\345\205\203\347\264\240.md" diff --git "a/0169. \345\244\232\346\225\260\345\205\203\347\264\240.md" "b/0169. \345\244\232\346\225\260\345\205\203\347\264\240.md" new file mode 100644 index 0000000..de02460 --- /dev/null +++ "b/0169. \345\244\232\346\225\260\345\205\203\347\264\240.md" @@ -0,0 +1,59 @@ +# 169. 多数元素 + +给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 + +你可以假设数组是非空的,并且给定的数组总是存在多数元素。 + +示例 1: + +```js +输入:[3,2,3] +输出:3 +``` + +示例 2: + +```js +输入:[2,2,1,1,1,2,2] +输出:2 +```  + +进阶: + +尝试设计时间复杂度为 O(n)、空间复杂度为 O(1) 的算法解决此问题。 + +来源:力扣(LeetCode) + +链接:https://leetcode-cn.com/problems/majority-element + +著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 + +--- + +- 用 Map:空间复杂度不是 O(1) + +- 可以先排序,之后取中间的 + +- 摩尔投票法 + +```js +/** + * @param {number[]} nums + * @return {number} + */ +var majorityElement = function(nums) { + let current = nums[0], count = 1 + for(let i = 1; i < nums.length; i ++) { + if (nums[i] === current) { + count ++ + } else { + count -- + } + if (count === -1) { + current = nums[i] + count = 1 + } + } + return current +}; +```