在nsarray中缺少数字

时间:2016-07-14 08:52:49

标签: ios objective-c nsarray

美好的一天,例如:如果我有一个nsarray [3,1,5,3,3,5,0,1,1,3] 如何计算数组中的缺失数字: -4 -3 -2 -1 2 但是 - 不允许排序,必须以线性时间O(N)

运行

4 个答案:

答案 0 :(得分:2)

蛮力的方式就是这样的

一个。找到数组-5,3

中的最大值和最小值

湾循环多次数组形式-5到3寻找具体数字(-5,-4,-3,-2,-1,0 .... 3)

B1。如果找到的数字打破了那个循环并继续下一个

b2。如果循环结束而没有破坏,请注意该数字

与仅对其进行排序相比,它效率低下,但它以线性方式运行

答案 1 :(得分:1)

这个想法是制作另一个bool数组,并检查是否存在该数字。在你这样做之后,只需要经历一系列bool,如果number为false,那么它就会丢失。

答案 2 :(得分:1)

使用此代码

   NSArray *a = @[@3, @1, @-5, @3, @3, @-5, @0, @1, @1, @3];

    NSNumber *max=[a valueForKeyPath:@"@max.self"];
    NSNumber *min=[a valueForKeyPath:@"@min.self"];

    int big = [max intValue];
    int small = [min intValue];

    while (small<=big) {

        if ([a containsObject:[NSNumber numberWithInt:small]]) {

        }
        else
        {
            NSLog(@"missing number is %d",small);
        }




        small++;
    }

 result   

enter image description here

答案 3 :(得分:0)

如果数组中的数字是连续的整数,那么&#39;排序&#39;数组并找到两个连续数字之间的差异。如果是1,则不会错过该号码。此外,这个数字已经错过了。