最近碰到一个很有意思的计算题:
求一个整数数组中和最大的连续子数组,例如:[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);
幸福是奋斗出来的!!!