当前位置: 首页 > 面试题库 >

Swift:配对数组元素的最佳方法是什么

韦望
2023-03-14
问题内容

我遇到了一个问题,需要成对地遍历数组。最好的方法是什么?或者,作为替代方案,将Array转换为成对的Array(然后可以正常迭代)的最佳方法是什么?

这是我得到的最好的。它必须outputvar,而且不是很漂亮。有没有更好的办法?

let input = [1, 2, 3, 4, 5, 6]

var output = [(Int, Int)]()

for i in stride(from: 0, to: input.count - 1, by: 2) {
    output.append((input[i], input[i+1]))
}


print(output) // [(1, 2), (3, 4), (5, 6)]

// let desiredOutput = [(1, 2), (3, 4), (5, 6)]
// print(desiredOutput)

问题答案:

您可以 映射 跨步而不是对其进行迭代,从而可以将结果作为 常量获取:

let input = [1, 2, 3, 4, 5, 6]

let output = stride(from: 0, to: input.count - 1, by: 2).map {
    (input[$0], input[$0+1])
}

print(output) // [(1, 2), (3, 4), (5, 6)]

如果只需要遍历对,并且给定的数组很大,那么避免创建带有延迟映射的中间数组可能是有利的:

for (left, right) in stride(from: 0, to: input.count - 1, by: 2)
    .lazy
    .map( { (input[$0], input[$0+1]) } ) {

    print(left, right)

}


 类似资料:
  • 问题内容: 我只是从ReactJS开始,并尝试了其他类似问题的解决方案,但到目前为止还算不上成功。 这是我的工作代码: 但是当我将Numbers Array传递为: 我收到此错误: 警告:遇到两个具有相同密钥的孩子。密钥应该是唯一的,以便组件在更新期间保持其身份。 所以我的问题是:在这种情况下,提供密钥的最佳方法是什么?如果我将数字(如上例所示)用作键,那么避免此警告的最佳解决方案是什么? 谢谢!

  • 我有以下问题,例如:给定一个带有符号 的桶和一本菜谱来创建配对,例如: 从桶中选择最佳配对,在桶中保留尽可能少的符号。因此,使用上面的示例值,最佳配对将是: ,它将使用给定的所有符号。 从桶中简单地选取可能导致类似于: 使得和不匹配。和无法匹配,因为该书不包含该特定连接的制作方法 注: 实际问题平均包含:桶中500个元素,约30种符号。 我们已经尝试使用bruteforce算法来实现这个解决方案,

  • 问题内容: 好, 我知道有关的所有内容,但这会删除最后一个元素。在不删除数组的情况下获取数组最后一个元素的最佳方法是什么? 编辑:这是奖金: 甚至 问题答案: 此主题中的许多答案为我们提供了许多不同的选择。为了能够从他们中进行选择,我需要了解他们的行为和表现。在此答案中,我将与您分享我的发现,并针对PHP版本和(预计2018年12月13日)进行测试。 我将测试的选项是: 选项1。 选项.2。 (所

  • 从Java 8开始,所以需要一点时间来适应它。这是一个经典的问题,我有一个想要转换的对象数组。 在Java8之前,理想的代码是(没有空指针): Java8中最好的版本是什么?

  • 根据问题标题,我使用: 有没有更好的办法?

  • 问题内容: 这对我来说是一个耻辱,但我不知道: 您应该使用克隆来复制阵列,因为通常这是最快的方法。 如Josh Bloch在此博客中所述:http : //www.artima.com/intv/bloch13.html 我一直都习惯。两种方法都是本机的,所以可能没有深入研究我不知道的库来源,为什么会这样。 我的问题很简单:为什么这是 最快的 方法? 有什么区别 ? 此处 说明了差异,但未回答为何