我能不能用代码改变世界不知道,但是我准备先刷刷算法来改变自己。希望没有太晚。

数组 移除元素

暴力算法就是两个for循环来处理,将数据放到最后去,我有点想不清楚暴力方式了。

但是非暴力的方式是两个指针,快指针用于遍历数组的,慢指针用于放新的数组元素,所以如果值不等于目标值,就可以将值放进慢指针,并且移动慢指针。

 

977 有序数据的平方

思路其实也是前后两个指针,因为是平方,所以就是左右那个平方值最大,那就用哪个。还有一个点,是要倒着放,因为大的是可以固定的,小的不行。所以是倒着放值。

class Solution {
    public int[] sortedSquares(int[] nums) {
        int left = 0;
        int right = nums.length-1;
        int[] res = new int[nums.length];
        int i = nums.length-1;
        while(right >= left){
            if(nums[right]* nums[right] >= nums[left]*nums[left]){
                res[i] = nums[right]*nums[right];
                right--;
            }else{
                res[i] = nums[left]*nums[left];
                left++;
            }
            i--;
        }
        return res;
    }
}