算法&数组重排(一)

2018-07-11  本文已影响64人  CoderHG

确实在开发的过程中,似乎感觉算法离我们挺远的,其实并不遥远。

先来看这个问题:

有一个数组,请将这个数组中连续的同种数据类型的数据放到一个数组中,并且将这些数组依次放进一个数组中。

效果如下图所示(array 是原始数组, sortArray 是最终的数组)


image.png

那么问题来了:如果是你,你会如何实现?

这是我的实现方式,请看代码(故意不加注释):

- (NSArray*)arraySortWithArray:(NSArray*)array {
    if (array.count <= 1) {
        return array;
    }
    NSMutableArray* arrM = [NSMutableArray array];
    for (NSObject* obj in array) {
        NSMutableArray* subArrM = nil;
        if (arrM.count == 0) {
            subArrM = [NSMutableArray  array];
            [arrM addObject:subArrM];
        } else {
            subArrM = arrM.lastObject;
            if (![obj.class isEqual:[subArrM.lastObject class]]) {
                subArrM = [NSMutableArray  array];
                [arrM addObject:subArrM];
            }
        }
        [subArrM addObject:obj];
    }
    return arrM.copy;
}

到现在为止,自认为以上就是最优解了【偷笑五分钟、沉思一小时】。

你还有更好的方式么?

上一篇下一篇

猜你喜欢

热点阅读