脑经急转弯(数组从左到右 转为从上到下 数组等分 数组按给定的长度分)

将 1 - 100等分 成1-10 ,11-20........

将 1 - 100数据竖向排列 1 11 21 31..., 2 12 32 ..., 3  13  33...

转 

将 1- 100 分为 指定长度数组  @[@"1",@"2",@"3",@"5",@"20",@"20",@"49"] ;    1, 2 3 , 4 5 6...

 

-(void)test1{
    NSMutableArray *dataArr = [NSMutableArray array];
    for(int i = 1;i<101;i++){
        [dataArr addObject:[NSString stringWithFormat:@"%d",i]];
    }
    //数据竖向排列
    NSMutableArray *dealArr = [NSMutableArray array];
    for(int i = 0;i< 10;i++){
        for (int j = 0;j <100 ;j++) {
             if (j%9 == i) {
            [dealArr addObject:dataArr[j]];
             }
        }
        
    }
    NSMutableArray *arr1 = [self splitArray:dataArr withSubSize:10];
    //  取数组 第一个元素  第2,3, 第 4,5,6 .....s对应数字n + 1 后的 n个元素 当取2时 元素减去 已经取过的@“2”时 元素 为 99 个 第一个移除 第一位为 2 .....
    NSMutableArray *arr2 = [self splitArray:dataArr longArr:(NSMutableArray*)@[@"1",@"2",@"3",@"5",@"20",@"20",@"49"] ];
      NSLog(@"=数据竖向排列== %@",dealArr);
    NSLog( @"===数组等分== %@",arr1);
     NSLog( @"===数组根据给定长度划分== %@",arr2);
  
}
- (NSMutableArray *)splitArray: (NSMutableArray *)array longArr:(NSMutableArray*)longarr{
    NSMutableArray *allDataArr = array;
    NSMutableArray *allrr = [NSMutableArray array];
    for (NSString *longStr in longarr) {
        int index = [longStr intValue];
        NSMutableArray *arr = [NSMutableArray array];
        for(int i = 0; i<index ;i++ ){
            [arr addObject:allDataArr[i]];
        
        }
        NSMutableArray *rmarr = [NSMutableArray array];
        for (int i = 0; i<allDataArr.count ;i++) {
            
            if ( i >=  index) {
                [rmarr addObject:allDataArr[i]];
            }
        }
        allDataArr = rmarr;
        
        [allrr addObject:arr];
    }
    
    return allrr;
}
//数组按指定长度等分
- (NSMutableArray*)splitArray: (NSMutableArray*)array withSubSize : (int)subSize{
    //  数组将被拆分成指定长度数组的个数
    unsigned long count = array.count % subSize == 0 ? (array.count / subSize) : (array.count / subSize + 1);
    //  用来保存指定长度数组的可变数组对象
    NSMutableArray *arr = [[NSMutableArray alloc] init];
    
    //利用总个数进行循环,将指定长度的元素加入数组
    for (int i = 0; i < count; i ++) {
        //数组下标
        int index = i * subSize;
        //保存拆分的固定长度的数组元素的可变数组
        NSMutableArray *arr1 = [[NSMutableArray alloc] init];
        //移除子数组的所有元素
        [arr1 removeAllObjects];
        
        int j = index;
        //将数组下标乘以1、2、3,得到拆分时数组的最大下标值,但最大不能超过数组的总大小
        while (j < subSize*(i + 1) && j < array.count) {
            [arr1 addObject:[array objectAtIndex:j]];
            j += 1;
        }
        //将子数组添加到保存子数组的数组中
        [arr addObject:[arr1 copy]];
    }
    
    return [arr copy];
}

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值