for(int k=0; k<n-1 ; k++)
{
    for(int l=k+1; l<n; l++)
    {
        if(s[k]<s[l])
            count = count+1;
    }
}

此,c++"/>

首页 > 解决方案 > 如何用 si 计算对数

for(int k=0; k<n-1 ; k++)
{
    for(int l=k+1; l<n; l++)
    {
        if(s[k]<s[l])
            count = count+1;
    }
}

问题描述

for(int k=0; k<n-1 ; k++)
{
    for(int l=k+1; l<n; l++)
    {
        if(s[k]<s[l])
            count = count+1;
    }
}

此代码具有 O(n²) 复杂度。如何改进?


使守夜人在警告级别消息上失败

警告:WaitForElement 为选择器“.modal”找到 5 个元素。只会检查第一个。

我的测试报告中有这个警告,并毫不费力地修复了它。问题是,我有一段时间没有注意到这个警告,因为 nightwatch 以绿色文本 (WTF) 显示这条消息。

有没有办法让守夜人因任何警告而失败?

顺便说一句,我使用的是默认测试运行器。

标签: c++

解决方案


如果保证数组中的所有元素都是唯一的,那么这很简单。将成为第 (n-1) 个三角形s[i]-s[j]数的对数,其中是数组中的元素数。请参阅下面的简单元素表。行指定,列指定s[i] < s[j]n{0, 1, 2, 3}s[i]s[j]

   0   1   2   3
0  =   <   <   <
1  >   =   <   <
2  >   >   =   <
3  >   >   >   =

我们正在寻找s[i]小于的数字s[j]- 如您所见,这是表格的右上角三角形。只要所有元素都是独一无二的,这将永远是正确的。

要计算三角数,它是(n - 1) * n / 2


推荐阅读