企业查询官方网站,网站 关键字,可以用来做网页的软件,西安app网站开发项目文章目录 一、删除元素1.1 原地移除所有值等于val的元素1.2 删除有序数组中的重复项 二、元素奇偶移动三、数组轮转 一、删除元素
1.1 原地移除所有值等于val的元素
LeetCode 27.移除元素 解法1#xff1a;快慢指针
class Solution {public int removeElement(int[] nums, … 文章目录 一、删除元素1.1 原地移除所有值等于val的元素1.2 删除有序数组中的重复项 二、元素奇偶移动三、数组轮转 一、删除元素
1.1 原地移除所有值等于val的元素
LeetCode 27.移除元素 解法1快慢指针
class Solution {public int removeElement(int[] nums, int val) {int fast0;int slow0;for(; fastnums.length; fast){if(nums[fast]!val){nums[slow] nums[fast];slow;}}return slow;}
}解法2双指针覆盖
class Solution {public int removeElement(int[] nums, int val) {int left0;int rightnums.length-1;while(leftright){if(nums[left]val){nums[left] nums[right--];}else{left;}}return left;}
}1.2 删除有序数组中的重复项
LeetCode 26.删除有序数组中的重复项
class Solution {public int removeDuplicates(int[] nums) {int slow 1;for(int fast0;fastnums.length;fast){if(nums[slow-1]!nums[fast]){nums[slow]nums[fast];slow;}} return slow;}
}二、元素奇偶移动
LeetCode 905.按奇偶排序数组 双指针遍历判断。
class Solution {public int[] sortArrayByParity(int[] nums) {int left 0;int right nums.length - 1;while(leftright){if(nums[left]%2nums[right]%2){int tmp nums[left];nums[left] nums[right];nums[right] tmp;}if(nums[left]%20) left;if(nums[right]%21) right--;}return nums;}
}三、数组轮转
LeetCode 189.轮转数组 比如 1234567。向右轮转3个位置结果为5671234
可以把数组分为不轮转的数组和要轮转的数组两部分 1234 和 567。各自反转为4321和765。最后整体反转得到结果。
class Solution {public void rotate(int[] nums, int k) {int l nums.length;k % l;reverse(nums,0,l-k-1);reverse(nums,l-k,l-1);reverse(nums,0,l-1);}private void reverse(int[] nums,int left,int right){while(leftright){int tmp nums[left];nums[left] nums[right];nums[right] tmp;left;right--;}}
}