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

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

求一个整数数组中和最大的连续子数组,例如:[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);


                                                                幸福是奋斗出来的!!!


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容