求一个整数数组中和最大的连续子数组,例如:[1, 2, -4,

2018-05-22  本文已影响0人  money_ac9e

最近碰到一个很有意思的计算题:

求一个整数数组中和最大的连续子数组,例如:[1, 2, -4, 4, 10, -3, 4, -5, 1]的最大连续子数组是[4, 10, -3, 4](需写明思路,并编程实现)。

现答案如下:

/*

     思路:

     三个关键词:连续的  和  最大

     遍历 一个个取出来

     位置:

     0

     0 1

     0 1 2

     0 1 2 3

     0 1 2 3 4

     int all 数去和

     arr 需要的数组

     遍历数组1

     从0开始  到数组的位数-1

     遍历从上个循环初始值开始  到数组的位数-1

        每次都取出来 求和 all相比  >all 放入数组arr中

     */

    NSArray*createArr =@[@1,@2, @-4,@4,@10, @-3,@4, @-5,@1];

    NSMutableArray *arr = [[NSMutableArray alloc] init];

    NSMutableArray *arr2 = [[NSMutableArray alloc] init];

    NSNumber*min = [createArrvalueForKeyPath:@"@min.floatValue"];

    intall = [minintValue];

    //从0到最后一个

    for(inti =0; i < createArr.count; i++) {

        //移除数据

        [arr2removeAllObjects];

        //一次从i到最后一个

        inta =0;

        for(intj = i; j < createArr.count; j++) {

            //取值

            NSString*str = createArr[j];

            a += [strlongLongValue];

            [arr2addObject:str];

            NSLog(@"临时数组:%@,临时大小:%d。",arr2,a);

            //比较大小

            if(a>all) {

                all = a;

                //移除数据

                [arrremoveAllObjects];

                [arraddObjectsFromArray:arr2];

            }

        }

    }

    NSLog(@"最终数组:%@,最终大小:%d",arr,all);

                                                                幸福是奋斗出来的!!!

上一篇 下一篇

猜你喜欢

热点阅读