iOS常用算法之兩個有序數組合並, 要求時間復雜度為0(n)


 

思路: 常規思路: 先將一個數組作為合並后的數組, 然后遍歷第二個數組的每項元素, 一一對比, 直到找到合適的, 就插入進去;

  簡單思路: 設置數組C, 對比A和B數組的首項元素, 找到最小的, 就放入數組C,依次進行下去.

代碼如下:

- (NSArray *)mergeOrderArrayWithFirstArray: (NSMutableArray *)array1 secondArray: (NSMutableArray *)array2 {
    // 全為空不處理
    if (!array1.count && !array2.count) {
        return @[];
    }
    // 一個為空返回另外一個
    if (!array1.count) {
        return array2;
    }
    if (!array2.count) {
        return array1;
    }
    NSMutableArray *endArray = [NSMutableArray array];
    while (1) {
        if ([array1[0] integerValue] < [array2[0] integerValue]) {
            [endArray addObject:array1[0]];
            [array1 removeObjectAtIndex:0];
        }else  {
            [endArray addObject:array2[0]];
            [array2 removeObjectAtIndex:0];
        }
        if (!array1.count) {
            [endArray addObjectsFromArray:array2];
            break;
        }
        if (!array2.count) {
            [endArray addObjectsFromArray:array1];
            break;
        }
    }
    return endArray;
}
 

 

執行代碼, 輸入輸出結果如下:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM