美文网首页
iOS多个数组进行排列组合算法

iOS多个数组进行排列组合算法

作者: 远航Yang | 来源:发表于2021-02-23 15:28 被阅读0次

上次有朋友开发我的时候遇到需要将多个数组里面的字符串逐个进行排列组合,例如:数组1:@[@"1",@"2",@"3",@"4"],数组2:@[@"5",@"6",@"7",@"8"],数组3:@[@"9",@"10",@"11",@"12"],数组4:@[@"13",@"14",@"15",@"16"],

需要排列成(1,5,9,13),(1,5,9,14)......等组合,下面贴下代码参考下:

NSMutableArray *array1 = [NSMutableArray arrayWithArray: @[@"1",@"2",@"3",@"4"]];

NSMutableArray *array2 = [NSMutableArray arrayWithArray:@[@"5",@"6",@"7",@"8"]];

NSMutableArray *array3 = [NSMutableArray arrayWithArray:@[@"9",@"10",@"11",@"12"]];

NSMutableArray *array4 = [NSMutableArray arrayWithArray:@[@"13",@"14",@"15",@"16"]];

//放在一个数组中便于循环添加数组

NSMutableArray*array = [NSMutableArrayarrayWithObjects:array1,array2,array3,array4,nil];

NSArray*list = [selfmergeArray:array];

NSLog(@"%@",list);

- (NSMutableArray *)mergeArray:(NSMutableArray *)array {

    if(array.count>1) {

        NSMutableArray*resultArray = [NSMutableArrayarray];

        NSMutableArray*firstArray = array[0];

        NSMutableArray*secondArray = array[1];

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

            if(![firstArray[i]isKindOfClass:[NSMutableArrayclass]]) {

                firstArray[i] = [NSMutableArrayarrayWithObjects:firstArray[i],nil];

            }

            for(intj =0; j < secondArray.count; j++) {

                if(j ==0) {

                    [firstArray[i]addObject:secondArray[j]];

                }else{

                    [firstArray[i]replaceObjectAtIndex:((NSArray*)firstArray[i]).count-1withObject:secondArray[j]];

                }

                NSArray*temArray = [firstArray[i]mutableCopy];

                [resultArrayaddObject:temArray];

            }

        }

        [arrayreplaceObjectAtIndex:0withObject:resultArray];

        [arrayremoveObjectAtIndex:1];

        [selfmergeArray:array];

    }

    returnarray;

}

相关文章

网友评论

      本文标题:iOS多个数组进行排列组合算法

      本文链接:https://www.haomeiwen.com/subject/nnwrfltx.html