1. 程式人生 > 其它 >知識彙總:python辦公自動化應該學習哪些內容

知識彙總:python辦公自動化應該學習哪些內容

搜尋插入位置

題目

給定一個排序陣列和一個目標值,在陣列中找到目標值,並返回其索引。如果目標值不存在於陣列中,返回它將會被按順序插入的位置。

你可以假設陣列中無重複元素。

示例 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

來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/search-insert-position
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。


解決方法

思路
  1. 第一想法就是直接遍歷
public int searchInsert(int[] nums, int target) {
//     int i = 0;
//     for (int j = 0; j < nums.length; j++){
//         if (nums[j] == target || nums[j] > target){
//             break;
//         }
//         i++;
//     }
//     return i;
// }

  1. 第二個方法是看了解題才想起來,這可以使用二分法。
public int searchInsert(int[] nums, int target) {
	int left = 0;
	int right = nums.length - 1;

	while(left <= right){
		int mid  = (left + right) / 2;
		
		if (nums[mid] == target){
			return mid;
		}
		if (nums[mid] > target){
			right = mid - 1;
		}else{
			left = mid + 1;
		}
	}

	return left;
}
  • 需要注意,當新插入的值在最左側和最右側的情況,也就是 left == right 的情況的返回值。
  • 最左側的時候返回left,也就是0;
  • 最右側的時候返回left,此時的left是最右側索引值 + 1;