iOS常用算法之兩個有序數(shù)組合并(要求時間復(fù)雜度為0(n))
思路:
常規(guī)思路:
先將一個數(shù)組作為合并后的數(shù)組, 然后遍歷第二個數(shù)組的每項元素, 一一對比, 直到找到合適的, 就插入進(jìn)去;
簡單思路: 設(shè)置數(shù)組C, 對比A和B數(shù)組的首項元素, 找到最小的, 就放入數(shù)組C,依次進(jìn)行下去.
代碼如下:
- (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;
}
執(zhí)行代碼, 輸入輸出結(jié)果如下:

總結(jié)
以上所述是小編給大家介紹的iOS常用算法之兩個有序數(shù)組合并(要求時間復(fù)雜度為0(n)),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!
相關(guān)文章
分享一個關(guān)于Storyboard 跳轉(zhuǎn)與傳值
近日不忙,給大家分享一個關(guān)于storyboard跳轉(zhuǎn)傳值的相關(guān)知識,感興趣的朋友一起看看吧2015-12-12
IOS倒計時設(shè)置UIButton標(biāo)題title的抖動問題
這篇文章主要介紹了IOS倒計時設(shè)置UIButton標(biāo)題title的抖動問題,在發(fā)送驗證碼后,button狀態(tài)需要變?yōu)閐isable,每隔一秒顯示倒計時時間,下面通過本文給大家介紹設(shè)置方法,一起看看吧2016-12-12

