题目
我的题解
可以直接用Arrays.sort();
方法进行排序,但是感觉没锻炼到,所以根据nums
的特性(非递减)选择了选择排序算法。
class Solution {
public int[] sortedSquares(int[] nums) {
for (int i = 0; i < nums.length; i++) {
nums[i] = nums[i] * nums[i];
}
int tmp;
// 变形选择排序
for (int i = 0; i < nums.length; i++) {
for (int j = i+1; j < nums.length; j++) {
if (nums[i] >= nums[j]) {
tmp = nums[i];
nums[i] = nums[j];
nums[j] = tmp;
} else {
// 如果找到了一个比当前值大的就停止,因为nums是非递减序列,后面的值肯定更大
break;
}
}
}
return nums;
}
}
其他题解
这道题纠结的就是负数的平方会不会大于正数的平方,简化想就是两头数据的对比,接着选择较大值逆序存入目标数组即可。参考解法链接的解法三。
总结
- 在Java编程规范中,
if - else if
语句中,注释可以写在同行或者块内。