LeetCode 35

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。

你可以假设数组中无重复元素。

示例 1

输入: [1,3,5,6], 5 输出: 2

示例 2

输入: [1,3,5,6], 2 输出: 1

示例 3

输入: [1,3,5,6], 7 输出: 4

示例 4

输入: [1,3,5,6], 0 输出: 0

代码


class Solution {
public:
    int searchInsert(vector<int>& nums, int target) {
        for(int i = 1; i <= nums.size(); i++) {

            // 遍历数组时能够找到目标元素
            if(nums[i-1] == target) {
                return i-1;
            } 

            // 数组的长度为1
            // 或者 直至遍历到数组末尾时,方才发现目标值大于该末尾元素
            if(i == nums.size()) {
                if(target > nums[i-1]) {
                    return i;
                }
            }

            // 除以上两种可能的情况外,在遍历数组的过程中,便发现了可以插入的位置
            if(target > nums[i-1] && target < nums[i]) {
                return i;
            }
        }

        return 0;

    }
};

LeetCode上 我的题解:

https://leetcode-cn.com/problems/search-insert-position/solution/cai-niao-ru-men-ji-jie-da-by-haohao1024/