请在 下方输入 要搜索的题目:

数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。[br][/br] [br][/br] 示例 1: [br][/br] 输入: [1, 2, 3, 2, 2, 2, 5, 4, 2] 输出: 2

数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。[br][/br] [br][/br] 示例 1: [br][/br] 输入: [1, 2, 3, 2, 2, 2, 5, 4, 2] 输出: 2

发布时间:2025-04-01 05:42:59
推荐参考答案 ( 由 快搜搜题库 官方老师解答 )
联系客服
答案:int qs(int *nums, int l, int r, int k) { if (l >= r) return nums[l]; int x = nums[l + r >> 1]; int i = l - 1, j = r + 1; while (i [ j) { while (nums[++ i] < x); while (nums[-- j] ] x); if (i < j) { int t = nums[i]; nums[i] = nums[j]; nums[j] = t; } } int sl = j - l + 1; if (k <= sl) return qs(nums, l, j, k); else return qs(nums, j + 1, r, k - sl); } int majorityElement(int* nums, int numsSize){ return qs(nums, 0, numsSize - 1, (numsSize + 1) / 2); }[/i][/i]
专业技术学习
相关试题
专业技术学习
搜搜题库系统