我首先要说我是编程新手。我在编写C ++中另一个列表的不同数字列表时遇到问题。假设我有一个列表l1 = {1, 12, 2, 4, 1, 3, 2},我想创建一个新的列表,看起来像这样的l2 = {1, 12, 2, 4, 3} ...

这是我写的:

#include <iostream>

using namespace std;

int main() {
    int l1[100], l2[100], length, length1 = 0, i, j, a = 0;
    cin >> length; //set the length
    for (i = 0; i < length; i++) {
        cin >> l1[i]; //add numbers to the list
    }
    l2[0] = l1[0]; //added the first number manually
    for (i = 0; i < length; i++) {
        length1++;
        a = 0;
        for (j = 0; j < length1; j++) {
            if (l1[i] != l2[j]) //this checks numbers in the second list
                a = 1;         // and if they aren't found a gets the value
        }                     //1 so after it's done checking if a is 1 it
        if (a == 1)          //will add the number to the list, but if the
            l2[j] = l1[i];  //number is found then a is 0 and nothing happens,
    } //                                         SUPPOSEDLY
    for (j = 0; j < length1; j++) {
        cout << l2[j] << " ";
    }
}


此输出为1 -858993460 12 2 4 1 3,因此显然我做错了什么。我很欢迎您提出的任何建议,我不一定需要解决此问题,我只是想摆脱困境。
非常感谢您抽出宝贵的时间回复此问题。

最佳答案

最重要的:此解决方案假设我们必须保留订单

好....

试试这个...
我已经稍微改变了标识符(当然这不会影响执行)
它只会帮助我们确定该变量的用途。

这是代码

#include <iostream>
using namespace std;

int main()
{
    int Input[100], Unique[100], InSize, UniLength = 0;

    cin >> InSize;
    for (int ii = 0 ; ii < InSize ; ii++ )
    {
        cin >> Input[ii];
    }
    Unique[0] = Input[0];
    UniLength++;
    bool IsUnique;
    for ( int ii = 1 ; ii < InSize ; ii++ )
    {
        IsUnique=true;
        for (int jj = 0 ; jj < UniLength ; jj++ )
        {
            if ( Input[ii] == Unique[jj] )
            {
                IsUnique=false;
                break;
            }
        }
        if ( IsUnique )
        {
            Unique[UniLength] = Input[ii];
            UniLength++;
        }
    }
    for ( int jj = 0 ; jj < UniLength ; jj++ )
    {
        cout << Unique[jj] << " ";
    }
}


您正在将Unique元素插入到新数组的原始索引中.....并代替那些重复的元素....您没有进行任何形式的转换..即它们未初始化.. 。并给出类似-858993460的内容

我很欣赏上面提到的两个答案,但是再次.....我认为这个问题放在了hackerrank ....上,unqiue_array()在这里不起作用.....

添加

当然,我们只能将“唯一”元素添加到我们的Input数组中.....但是...此解决方案有效.....此外,我们有2秒的执行时间限制....而且只有100个元素....请记住....大哦表示法对很大的输入都适用....在这里不是这种情况....所以看时间复杂度真的没有意义.......我在说什么我会选择易于理解的算法。

我希望这是您想要的...

祝你今天愉快。

关于c++ - C++中的不同数字,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25587998/

10-10 12:52