2、移除元素
erase函数,时间复杂度O(n)
1、暴力求解:两层,for循环遍历,删除,覆盖 ;O(n^2)
2、双指针思路:一层for循环,快指针(目标值),慢指针(非目标值)
时间复杂度O(n)空间复杂度O(1)
class Solution {
public int removeElement(int[] nums, int val) {
int slow=0;
for (int fast = 0; fast <nums.length ; fast++) {
if(nums[fast]!=val){
nums[slow]=nums[fast];
slow++;
}
}
return slow;
}
}
3、有序数组的平方
1、暴力排序:最直观的想法,莫过于:每个数平方之后,排个序,时间复杂度是 O(n + nlogn)
2、双指针法:时间复杂度为O(n)
class Solution {
public int[] sortedSquares(int[] nums) {
int k = nums.length-1;
int i = 0;
int j= nums.length-1;
int[] res = new int[ nums.length];
while (i <=j) {
if(nums[i]*nums[i]<nums[j]*nums[j]){
res[k]=nums[j]*nums[j];
j--;
k--;
}else {
res[k]=nums[i]*nums[i];
i++;
k--;
}
}
return res;
}
}