# 寻找中心索引
# 1.1 题目
# 1.2 解题思路
题目中给定了一个有序的数组,且最后要求时间复杂度为 log(n)
的算法,那么我们可以考虑使用二分查找法来解决这个问题。
在这里就不赘述二分查找的思路和实现了,LeetCode 的算法书籍上有对应的讲解。
# 1.3 代码实现
class Solution { | |
public: | |
int searchInsert(vector<int> &nums, int target) { | |
int left = 0, right = nums.size() - 1; | |
while (left <= right) { | |
// 防止溢出 | |
int mid = left + (right - left) / 2; | |
if (nums[mid] < target) { | |
left = mid + 1; | |
} else if (nums[mid] > target) { | |
right = mid - 1; | |
} else { // 找到了 立刻返回 | |
return mid; | |
} | |
} | |
return left; // 未找到 则返回插入位置 | |
} | |
}; |
大道五十,天衍四十九,人遁其一!