今天分享一道基础中的基础算法题, 给大家分享一下
如果你想知道什么题? 既然你诚心诚意的发问了, 我就大发慈悲的告诉你!
给定一个有序整数数组A, 找到 A[i] = i, 并返回i, 如果有很多相同, 返回最小i, 没有返回-1
例如:
A = [0, 1, 2, 3] 返回0
B = [2, 2, 2, 3] 返回2
由于题目比较简单直接上代码
func findIndex(_ nums: [Int]) -> Int {
for i in 0..<nums.count {
if nums[i] == i { return i }
}
return -1
}
当然由于是正序数组, 当我们循环时候如果当前 nums[i] > i的话, 我们可以将i直接跳到 nums[i]
为什么呢? 正序, 正序, 正序
nums[i + 1] >= num[i], 所以我们可以减少几次, 增加一行判断 nums[i] > i { i = nums[i] }
func findIndex(_ nums: [Int]) -> Int {
for var i in 0..<nums.count {
if nums[i] == i { return i }
else if nums[i] > i { i = nums[i] }
}
return -1
}
网友评论