118--杨辉三角--leetcode
题解:外层循环控制行数,内层循环控制每一个元素的生成。用List接口创建动态数组。时间复杂度为O(numRows²)。
977--有序数组的平方
题解:先for循环对每个元素平方,最后用sort方法对数组排序。
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;
}
}
时间复杂度:O(n log n)
- 平方操作: 遍历数组并对每个元素进行平方操作,这需要线性时间,即O(n),其中n是输入数组的长度。
- 排序操作: 使用Java内置的
Arrays.sort
函数进行排序。该函数的时间复杂度为O(n log n),其中n是数组的长度。
综合起来,平方操作和排序操作的时间复杂度相加,最终时间复杂度为O(n + n log n)。在大O表示法中,我们通常忽略低阶项和常数因子,因此可以简化为O(n log n)。
空间复杂度:O(1)
这个算法的空间复杂度主要取决于额外使用的空间,而不是输入本身的空间。在这里,除了输入数组外,并没有使用额外的空间来存储数据结构或中间结果。
因此,空间复杂度可以视为O(1),即常数级别的空间。即使在排序过程中可能有一些常数级别的辅助空间,但它不随着输入规模的增加而线性增长。
综上所述,该算法的时间复杂度为O(n log n),空间复杂度为O(1)。