「每日LeetCode」2022年5月21日

本文最后更新于:2023年3月19日 晚上

  1. 在长度 2N 的数组中找出重复 N 次的元素

961. 在长度 2N 的数组中找出重复 N 次的元素

给你一个整数数组 nums ,该数组具有以下属性:

  • nums.length == 2 * n.
  • nums 包含 n + 1 个 不同的 元素
  • nums 中恰有一个元素重复 n 次

找出并返回重复了 n_ _次的那个元素。

示例 1:
输入:nums = [1,2,3,3] 输出:3
示例 2:
输入:nums = [2,1,2,5,3,2] 输出:2
示例 3:
输入:nums = [5,1,5,2,5,3,5,4] 输出:5

提示:

  • 2 <= n <= 5000
  • nums.length == 2 * n
  • 0 <= nums[i] <= 104
  • nums 由 n + 1 个** 不同的** 元素组成,且其中一个元素恰好重复 n 次

思路

因为 2N 出现了 N 次,那么一定只有以下三种情况:排序后元素在最左侧;元素在最右侧;元素在中间。取最中间的两个元素:元素在中间的情况下,元素大小一定大于 4,取任意一个即可;比较中间左边的那个元素和第一个元素,相同的话,说明是元素在最左边的情况;剩余的就是元素在最右边的情况。

解答

1
2
3
4
5
6
7
8
9
10
11
12
/**
* @param {number[]} nums
* @return {number}
*/
var repeatedNTimes = function (nums) {
nums.sort();
const mid1 = nums[nums.length / 2];
const mid2 = nums[nums.length / 2 - 1];
const first = nums[0];
if (mid2 === first) return mid2;
else return mid1;
};