1. 程式人生 > >leetcode-35 搜尋插入位置

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

我們先假設要插入的數為key。

這是一個順序陣列,所以我們可以將陣列遍歷一遍然後查詢有沒有相等的,有的話返回下標。

如果沒有再遍歷一遍一旦陣列中的數字比key小就繼續往後直到到最後一個比key小的數之後就是key的位置

我們也可以只只遍歷一次先判斷是否相等然後再判斷是否比key小。

分析完之後我們就可以動手寫程式碼了

int searchInsert(int *arr, int length,int key)
{
	int i = 0;
	int ret = 0;
	for (i = 0; i < length; i++)
	{
		if (arr[i] == key) //如果找到返回下標
		{
			return i;
		}
		if (arr[i] < key)//如果小於要插入的數字記錄下表不斷更新
		{
			ret = i;
		}
	}
	if (target>arr[0])//防止出現要插入的位置是第一個
	{
		return ret + 1;
	}
	return 0;
}

但是要注意如果陣列中第一個數字就比要插入的數字大的話那插入的下標就是0;而不是ret+1