吴江公司网站建设电话竞价托管代运营公司
目录
描述
思路
代码
-
描述
-
思路
-
暴力破解
平方之后重新排序,用快排的时间复杂度O(n+logn)
-
双指针法
数组本来是有序的,平方之后无序的地方是开头和结尾,因为有负数的出现,使用左右双指针用一个循环就可以了
重新创建一个和原数组大小一致的数组,记录平方后有序的值
int left = 0;
int right = nums.length-1;
int k= nums.length-1;
int []res = new int[nums.length];
for(;left<=right;)
if(nums[right]*nums[right]>nums[left]*num[left]){ res[k] = nums[right]*nums[right]} right--;k--;
if(nums[right]*nums[right<=nums[left]*num[left]){ res[k] = nums[left]*num[left]} left++;k--;
-
代码
暴力破解:
class Solution{public int[] sortedSquares(int[] nums){for(int i=0;i<nums.length;i++){nums[i] = nums[i]*nums[i];}Arrays.sort(nums);return nums;}
}
双指针:
class Solution{public int[] sortedSquares(int[] nums){int left =0;int right = nums.length-1;int k = nums.length-1;int []res = new int[nums.length];for(;left<=right;){if(nums[left]*nums[left]<nums[right]*nums[right]){res[k] = nums[right]*nums[right];k--;right--;}else{res[k] = nums[left]*nums[left];k--;left++;}}return res;}
}