难度:简单
给定一个大小为
n的数组nums,返回其中的多数元素。多数元素是指在数组中出现次数 大于⌊ n/2 ⌋的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。
示例 1:
输入:nums = [3,2,3] 输出:3示例 2:
输入:nums = [2,2,1,1,1,2,2] 输出:2提示:
n == nums.length1 <= n <= 5 * 104-109 <= nums[i] <= 109**进阶:**尝试设计时间复杂度为 O(n)、空间复杂度为 O(1) 的算法解决此问题。
思路:采用两两相消的方法,因为多数元素出现的次数是大于n/2的,所以只要两两不相等的元素相消,剩下的那个元素就肯定是多数元素了代码:
javaclass Solution { public int majorityElement(int[] nums) { int more = nums[0]; int count = 1; for(int i = 1; i < nums.length;i++ ){ if(more == nums[i]) { count++; }else if(count == 0) { more = nums[i]; count++; }else { count--; } } return more; } }运行结果:
难度:中等
相关企业
给定一个整数数组
nums,将数组中的元素向右轮转k个位置,其中k是非负数。示例 1:
输入: nums = [1,2,3,4,5,6,7], k = 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步: [7,1,2,3,4,5,6] 向右轮转 2 步: [6,7,1,2,3,4,5] 向右轮转 3 步: [5,6,7,1,2,3,4]示例 2:
输入:nums = [-1,-100,3,99], k = 2 输出:[3,99,-1,-100] 解释: 向右轮转 1 步: [99,-1,-100,3] 向右轮转 2 步: [3,99,-1,-100]提示:
1 <= nums.length <= 105-231 <= nums[i] <= 231 - 10 <= k <= 105进阶:
- 尽可能想出更多的解决方案,至少有 三种 不同的方法可以解决这个问题。
- 你可以使用空间复杂度为
O(1)的 原地算法解决这个问题吗?
思路:翻转三次,如图所示代码:
javaclass Solution { public void reverse(int[] nums,int left,int right){ while(left < right){ int tmp = nums[left]; nums[left] = nums[right]; nums[right] = tmp; left++; right--; } } public void rotate(int[] nums, int k) { int length = nums.length; k%=length; reverse(nums,0,length-1); reverse(nums,0,k-1); reverse(nums,k,length-1); } }运行结果:
LeetCode面试经典150题(day 3)
用bug解决bug2023-08-27 16:34
相关推荐
HjhIron13 小时前
面试常客:字符串算法从入门到进阶大志说编程13 小时前
Agent面试真题06: 十分钟带你快速掌握Agent记忆管理高频面试题(附详细答案)众人皆醒我独醉13 小时前
Kubernetes 为什么不直接调度容器?非要套一层 Pod吴佳浩14 小时前
DeepSeek DSpark:Confidence-Scheduled Speculative Decoding 技术解析亮亮不想说话9588815 小时前
iOS底层探索 -- GCD分析程序员小假16 小时前
从问题到答案:RAG系统完整处理流程与核心机制深度拆解触底反弹16 小时前
🧠 搞懂 Token,才算真正入门大模型——从分词原理到 Embedding 语义实战vivo互联网技术20 小时前
ICLR 2026 | 基于后验采样的图像恢复方法LearnIR:人脸去阴影、去雾沉默王二21 小时前
阿里一面,我霸气反问:你说你们在做Agent项目,说说langchain、muti-agent、a2a这些你们都是怎么做的?面试官一直在擦汗。。浮生望21 小时前
JS字符串与回文算法:从包装类到双指针的面试进阶之路

