难度:简单
给定一个大小为
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
相关推荐
他们叫我一代大侠7 小时前
Leetcode :模拟足球赛小组各种比分的出线状况Nebula_g8 小时前
C语言应用实例:硕鼠游戏,田忌赛马,搬桌子,活动选择(贪心算法)AI科技星8 小时前
张祥前统一场论动量公式P=m(C-V)误解解答海琴烟Sunshine8 小时前
leetcode 345. 反转字符串中的元音字母 pythonuhakadotcom8 小时前
在使用cloudflare workers时,假如有几十个请求,如何去控制并发?geobuilding9 小时前
将大规模shp白模贴图转3dtiles倾斜摄影,并可单体化拾取建筑jghhh019 小时前
基于高斯伪谱法的弹道优化方法及轨迹仿真计算mm-q291522272911 小时前
【天野学院5期】 第5期易语言半内存辅助培训班,主讲游戏——手游:仙剑奇侠传4,端游:神魔大陆2MoRanzhi120311 小时前
Python 实现:从数学模型到完整控制台版《2048》游戏2401_8414956411 小时前
【数据结构】基于BF算法的树种病毒检测

