【发布时间】:2012-03-25 17:07:59
【问题描述】:
我维护一个整数数组。重要的是,此数组中的整数始终从 0 开始按顺序排列。例如,如果数组中有 5 个整数,则它们的值必须是 0、1、2、3、4(尽管顺序不限)。
我想设计一个简单、有效的方法来检查这一点。如果数组包含从 0 到 array.count - 1 的所有正整数,它将返回 true。
我很想听听一些不同的想法来处理这个问题!
【问题讨论】:
-
如果您需要确定,最好的办法就是遍历数组中的每个元素并检查。因此,只需从 0 数到数组的长度减一,并检查数组的位置
i中的值是否实际上是值i。 (唯一的“优化”是在遇到不应该的元素时返回 false,而不是继续计数)。编辑:哦,而且,Mathias 提出了一个很好的观点:无论如何保留这个数组有什么意义?你很清楚如何计算n以下的每一个自然数,那么为什么要把它们全部存储起来呢? -
你用这个数组做什么?保持数组的上限,并迭代整数不是更容易吗?
-
我使用数组来填充表格视图。数字是排序顺序。我以不同的方式将项目放入和移出部分,并且只想要一种方法来确保我正确设置排序顺序,以便在我将项目移入/移出部分后,没有间隙等。我会发布我目前在做什么——我认为它符合你的建议。只是想知道是否有更巧妙的方法(例如,我正在研究对数字求和并与斐波那契数列进行比较 - 可能效率不高,但可能很有趣)。
-
@gspr - 我不太关心订单,所以我使用 containsObject 而不是 objectForIndex
标签: objective-c ios math nsarray logic