什么网站有女人跟狗做的,杭州翰臣科技有限公司,怎么做服装外贸网站,手机购物网站建设删除有序数组中的重复项||
80. 删除有序数组中的重复项 II - 力扣#xff08;LeetCode#xff09;
和之前的删除有序数组中的重复项|相似#xff0c;这里是要求最多出现两次#xff0c;所以多加一个变量来记录出现次数即可#xff0c;整体上还是使用双指针#xff0c;…删除有序数组中的重复项||
80. 删除有序数组中的重复项 II - 力扣LeetCode
和之前的删除有序数组中的重复项|相似这里是要求最多出现两次所以多加一个变量来记录出现次数即可整体上还是使用双指针比较容易解出。
public int removeDuplicates(int[] nums) {int p10,p21,n1;while (p2nums.length){if (nums[p1]nums[p2]){n;if(n2){p2;continue;}}else {n1;}nums[p1]nums[p2];}return p11;}
多数元素
169. 多数元素 - 力扣LeetCode
使用投票法
原理找一个变量p记录遇到不一样的就p--一样就p因为题中说要返回的结果他的数量是大于[n/2]的所以无论过程中怎么或者--到最后都会剩下至少一个要返回的数。
public int majorityElement(int[] nums) {int res0;int tp0;for(int i0;inums.length;i){if(tp0){resnums[i];}if(nums[i]res){tp;}else{tp--;}}return res;}
轮转数组
189. 轮转数组 - 力扣LeetCode
第一步先将数组整体翻转
第二步再翻转前k个元素
第三步再反转剩下的n-k个元素 public static void rotate(int[] nums, int k) {if(knums.length){kk%nums.length;}fanzhuan(nums,0,nums.length-1);fanzhuan(nums,0,k-1);fanzhuan(nums,k,nums.length-1);}public static void fanzhuan(int[] nums, int l, int r){while(lr){int temp nums[l];nums[l] nums[r];nums[r--] temp;}}
买卖股票的最佳时机
121. 买卖股票的最佳时机 - 力扣LeetCode
遵循低点买入高点卖出所以我认为的关键是找到最低点然后依次遍历他后面的点找出“最高点”就行了 public int maxProfit(int[] prices) {int n prices.length;int max 0;int min 100009;for (int i 0; i n; i) {if(prices[i]min){min prices[i];}else if(prices[i]-minmax){max prices[i]-min;}}return max;}
买卖股票的最佳时机||
122. 买卖股票的最佳时机 II - 力扣LeetCode
使用贪心只考虑本天买入和下一天卖出是否能赚只要能赚x[i1]-x[i]0则将所赚计入。 public int maxProfit(int[] prices) {int n prices.length;int max 0;for (int i 0; i n-1; i) {maxprices[i1]-prices[i]0?prices[i1]-prices[i]:0;}return max;}
跳跃游戏
55. 跳跃游戏 - 力扣LeetCode
找一个变量max来记录当前能到达的最远距离遍历数组的每个元素x[i]maxi则意味着到达不了返回false如果maxi就进行后续操作重新计算max的值重新计算能到到达的最远距离计算方式就是当前坐标位置加该位置能走几步x[i]i与当前max比较取最大然后再与数组长度比较maxlength就返回true。 public boolean canJump(int[] nums) {int max 0;for(int i 0;i nums.length;i){if(imax){max (nums[i]i)max ? (nums[i]i):max;if(maxnums.length-1){return true;}}}return false;}
跳跃游戏||
45. 跳跃游戏 II - 力扣LeetCode
要求返回的是最小步数所以可以考虑使用贪心来解决每到一个新的位置就计算比较这个新的位置能到到达的范围中哪一个位置能到达的距离最远也就是x[i]i就选择到哪一个位置以此类推。 public int jump(int[] nums) {int max 0;int end 0;int n nums.length;int count 0;for (int i 0; i n-1; i) {max nums[i]imax?nums[i]i:max;if (endi) {end max;count;}}return count;}