亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我現在做的就是用遍歷生成的,有沒有什么辦法可以高效完成的。

我現在做的就是用遍歷生成的,有沒有什么辦法可以高效完成的。

慕碼人8056858 2023-04-16 21:17:19
我有這樣一個數組NSArray *a = [NSArray arrayWithObjects:@"a", @"b", @"c", @"a", @"b", @"d", nil];首先需要去掉重復的,活的這樣的NSArray *a = [NSArray arrayWithObjects:@"a", @"b", @"c", @"d", nil];另外的需求就是要生成這樣的數組NSArray *a = [NSArray arrayWithObjects:     [NSDictionary arrayWithObjectsAndKeys:@"2", @"a", nil],     [NSDictionary arrayWithObjectsAndKeys:@"2", @"b", nil],     [NSDictionary arrayWithObjectsAndKeys:@"1", @"c", nil],     [NSDictionary arrayWithObjectsAndKeys:@"1", @"d", nil],    nil];鍵是唯一值,值是數量
查看完整描述

2 回答

?
開滿天機

TA貢獻1786條經驗 獲得超13個贊

自己實現吧,也不算復雜。去重主要有兩種算法:

1. 元素個數不多(小于1M個都可以算),先排序(O(NlogN)復雜度),然后順序遍歷一次即可去重

2. 元素個數相當多(多余1M),哈希去重,然后收集起來。


查看完整回答
反對 回復 2023-04-20
?
當年話下

TA貢獻1890條經驗 獲得超9個贊

如果結果的順序無所謂,可以用Key Value Coding:

NSArray *result = [a valueForKeypath:@"@distinctUnionOfObjects.self"];

如果希望能保持原來的順序,在iOS 5.0或OS X 10.7以上版本,可以用:

NSArray *orderedResult = [[NSOrderedSet orderedSetWithArray:a] array]

但這只是開發高效,運行效率不一定比自己實現的快。


查看完整回答
反對 回復 2023-04-20
  • 2 回答
  • 0 關注
  • 210 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號