算法8--数组

本文介绍了两个LeetCode题目:118杨辉三角和977有序数组的平方。通过算法实现和分析,讨论了平方操作和排序操作的时间复杂度(O(n)+O(nlogn)简化为O(nlogn)),以及空间复杂度为O(1)。
摘要由CSDN通过智能技术生成

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)

  1. 平方操作: 遍历数组并对每个元素进行平方操作,这需要线性时间,即O(n),其中n是输入数组的长度。
  2. 排序操作: 使用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)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值