美文网首页
2020-04-23

2020-04-23

作者: 不如养花 | 来源:发表于2020-04-23 14:10 被阅读0次

二维数组的查找

题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

- (void)viewDidLoad {
    [super viewDidLoad];
  
    //                            col
    NSArray *array = @[@[@1,@2,@8,@9],//row
                       @[@2,@4,@9,@12],
                       @[@4,@7,@10,@13],
                       @[@6,@8,@11,@15]];
    BOOL canFind = [self findNum:8 inArray:array];
    BOOL canTfind = [self TfindNum:8 inArray:array];
    NSLog(@"last:%d",canFind);
    NSLog(@"last:%d",canTfind);
    
}

- (BOOL)findNum:(int)num inArray:(NSArray *)arr {
    
    NSUInteger totalrow = arr.count;
    NSUInteger row = 0;
    NSInteger col = ((NSArray *)arr[0]).count - 1;
    do {
        if ([arr[row][col] intValue] > num) {
            if (col > 0) {
                col --;
            }else {
                return NO;
            }
              
            }else if ([arr[row][col] intValue] < num){
                if (row < (totalrow - 1)) {
                    row++;
                }else {
                    return NO;
                }
            }else {
                NSLog(@"num%d-行%lu-列%ld",num,(unsigned long)row,(long)col);
                return YES;
            }
        NSLog(@"====%d",[arr[row][col] intValue]);
    } while ([arr[row][col] intValue] != num);
   return YES;
}

- (BOOL)TfindNum:(int)num inArray:(NSArray *)arr {
    
    NSUInteger totalrow = arr.count;
    NSUInteger row = 0;
    NSInteger col = ((NSArray *)arr[0]).count - 1;
    while (row < totalrow && col > 0) {
        if ([arr[row][col] intValue] > num) {
                col --;
        }else if ([arr[row][col] intValue] < num){
               row++;
               col = ((NSArray *)arr[0]).count - 1;
        }else {
              NSLog(@"Tnum%d-行%lu-列%ld",num,(unsigned long)row,(long)col);
              return YES;
                   }
    }
   return NO;
}

相关文章

网友评论

      本文标题:2020-04-23

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