在给定的一维已排序(升序)数组中寻找插入一个元素的位置
程序员文章站
2024-03-16 13:17:16
...
在给定的一维已排序(升序)数组中寻找插入一个元素的位置
在给定的一维已排序(升序)数组中寻找插入一个元素的位置,返回该元素在数组中的下标值。
如果该元素已经存在于数组中,则直接返回该元素在数组中的下标值。
例如:给定数组 {1,3,4,5,6,9,11},目标值是 7。
数组中不包含目标值,插入目标之后,数组变为: {1,3,4,5,6,7,9,11},返回下标值:5。
再例如:给定数组 {1,3,4,5,6,9,11},目标值是 5。
数组中包含目标值,返回下标值:3。
算法设计
public static int searchInsert(int[] nums, int target) {
int low = 0, high = nums.length;
while(low < high) {
int mid = low + (high - low) / 2;
if(nums[mid] < target)
low = mid + 1;
else
high = mid;
}
return low;
}
完整测试代码如下:
采用二分查找思路。
package com.bean.algorithmbasic;
public class SearchInsertPosition {
public static int searchInsert(int[] nums, int target) {
int low = 0, high = nums.length;
while(low < high) {
int mid = low + (high - low) / 2;
if(nums[mid] < target)
low = mid + 1;
else
high = mid;
}
return low;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] array= {1,3,4,7,15,19,22,25};
//int target=10;
int target=3;
int ANSWER=searchInsert(array,target);
System.out.println("ANSWER = "+ANSWER);
}
}
运行结果
ANSWER = 1
(完)
上一篇: 算法系列1
推荐阅读
-
在给定的一维已排序(升序)数组中寻找插入一个元素的位置
-
数据结构二分法-给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。
-
LeetCode 34. 在排序数组中查找元素的第一个和最后一个位置 Find First and Last Position of Element in Sorted Array
-
「力扣」第 34 题:在排序数组中查找元素的第一个和最后一个位置(二分查找)
-
在排序数组中查找元素的第一个和最后一个位置、变形二分法
-
#leetcode刷题之路34-在排序数组中查找元素的第一个和最后一个位置
-
34. 在排序数组中查找元素的第一个和最后一个位置
-
Leetcode No.34 在排序数组中查找元素的第一个和最后一个位置
-
在排序数组中查找元素的第一个和最后一个位置(二分、lower_bound、upper_bound)
-
在排序数组中查找元素的第一个和最后一个位置