本文主要是介绍算法训练营——day2数组部分例题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1 移除元素-力扣27(简单)
1.1 题目: 移除元素1
1.2 思路及解法
只能覆盖,不能删除
暴力遍历解法
class Solution {public int removeElement(int[] nums, int val) {int size=nums.length;for(int i=0;i<size;i++){if(nums[i]==val){for(int j=i+1;j<size;j++){nums[j-1]=nums[j];}i--;size--;}}return size;}
}
双指针法
//相向双指针法
class Solution {public int removeElement(int[] nums, int val) {int left = 0;int right = nums.length - 1;while(right >= 0 && nums[right] == val) right--; //将right移到从右数第一个值不为val的位置while(left <= right) {if(nums[left] == val) { //left位置的元素需要移除//将right位置的元素移到left(覆盖),right位置移除nums[left] = nums[right];right--;}left++;while(right >= 0 && nums[right] == val) right--;}return left;}
}
2 删除有序数组中的重复项-力扣27(简单)
2.1 力扣27题(简单)
2.2 思路及解法
(图片摘自力扣题解大佬Max)
class Solution {public int removeDuplicates(int[] nums) {if(nums.length==0 || nums==null){return 0;}int low=0;int fast=1;while(fast<nums.length){if(nums[low]!=nums[fast]){nums[low+1]=nums[fast];low++;}fast++;}return low+1;}
}
未完待续。。。
这篇关于算法训练营——day2数组部分例题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!