【问题标题】:Time complexity single loop with two variables具有两个变量的时间复杂度单循环
【发布时间】:2021-10-07 13:39:03
【问题描述】:

以下代码的时间复杂度是多少?为什么?

public static int[] Shuffle(int[] nums, int n)
{
    int len = nums.Length;
    int[] final = new int[2 * n];
    int counter = 0;
    for (int i = 0, j = n; i < n; i++, j++)
    {
        final[counter++] = nums[i];
        final[counter++] = nums[j];
    }

    return final;
 
}

如果我们将有如下两个循环,那么它将被认为是 O(n^2) 的时间复杂度

for (int i = 0; i < n; i++)
{
   for (int j = 0; j < n; j++)
   {
   }
}

【问题讨论】:

标签: data-structures time-complexity dsa


【解决方案1】:

复杂度为 O(n),因为光标从 i = 0 循环到 i = n-1。当涉及到时间复杂度时,变量的数量并不重要。 (也有空间复杂度)不过要小心,

for (int i = 0, j = n; i < n; i++, j++)

完全不同

for (int i = 0; i < n; i++)
{
   for (int j = 0; j < n; j++)
   {

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-13
    • 2011-08-17
    • 1970-01-01
    相关资源
    最近更新 更多