【发布时间】:2021-01-14 02:02:54
【问题描述】:
我有一个 CGFloat 数组。我还有一个任意值 a,它可以是任何 CGFloat。我的问题是,我如何有效地找到 a 位于哪两个索引之间。附带说明,a 永远不会低于或大于数组的最小值或最大值,因此无需担心。
举个简单的例子,我可能有:
let array: [CGFloat] = [4, 7, 10, 22, 23, 25, 67]
// a can be any random number, this initialization is for the example
let a = 14
// some algorithm that calculates indexes
// code returns index 2 and 3 (or it returns items 10, 22)
我开发了一种涉及 for 循环的方法,但是,列表越大,代码效率越低。有没有更智能、更高效的代码?
感谢大家的帮助:)
【问题讨论】:
-
输入数组排序了吗?
-
一个可能的解决方案,
firstIndex(where:),你会发现第一个索引值大于你的值(你得到上限)。然后,较低的索引,即该索引减 1。 -
给定
a == 10,应该返回什么? -
请您自己努力解决这个问题。
标签: arrays swift for-loop indexing