1. 程式人生 > >演算法設計與分析作業1

演算法設計與分析作業1

                             35. Search Insert Position

Description:

Given a sorted array and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order.

You may assume no duplicates in the array.

Example 1:

Input: [1,3,5,6], 5
Output:
2

Example 2:

Input: [1,3,5,6], 2
Output: 1

Example 3:

Input: [1,3,5,6], 7
Output: 4

Example 4:

Input: [1,3,5,6], 0
Output: 0

解題思路:

將target值和vector中的值逐個進行比較,若nums中含有該元素,返回該元素下標,若nums中無該元素,返回插入位置的下標,注意target值小於nums第一個元素或者大於最後一個元素的情況。

程式碼如下:

class Solution {
public:
    int searchInsert(vector<int>& nums, int target) {
    	int i;
        if(target < nums[0]) {
    		return 0;
    	}
    	if(target > nums[nums.size()-1]) {
    		return nums.size();
    	}
    	for(i = 0; i < nums.size(); i++) {
    		if(target == nums[i]) {
    			return i;
    		}
    		if(target > nums[i] && target < nums[i+1]) {
    			return i+1;
    		}
    	}
    	return 0;
    }
};