[问题:]
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.
翻译:给你一个排好序的数组和一个目标值,请找出目标值可以插入数组的位置。
[ 分析:]
Here are few examples.
[1,3,5,6], 5 → 2
[1,3,5,6], 2 → 1
[1,3,5,6], 7 → 4
[1,3,5,6], 0 → 0
注意:一定要考虑一些特殊情况,如数组为null等。
[ 解法:]
①. 常规解法:从数组索引为0的位置开始找,时间复杂度为O(n),accepted
public class Solution {
public int searchInsert(int[] A, int target) {
if (A != null) {
for (int i = 0; i < A.length; i++) {
if (target == A[i] || target < A[i]) {
return i;
}
}
return A.length;
}
return -1;
}
public static void main(String[] args) {
int[] arr = { 1, 3, 5, 6 };
System.out.println(new Solution().searchInsert(arr, 5)); // 5 -> 2
System.out.println(new Solution().searchInsert(arr, 2)); // 2 -> 1
System.out.println(new Solution().searchInsert(arr, 7)); // 7 -> 4
System.out.println(new Solution().searchInsert(arr, 0)); // 0 -> 0
}
}
②. 二分查找:时间复杂度log2n
前提条件:一定是有序数组。
public class Solution {
public int searchInsert(int[] A, int target) {
int mid;
int low = 0;
int high = A.length - 1;
while (low < high) {
mid = (low + high) / 2;
if (A[mid] < target) {
low = mid + 1;
} else if (A[mid] > target) {
high = mid - 1;
} else {
return mid;
}
}
return target > A[low] ? low + 1 : low;
}
public static void main(String[] args) {
int[] arr = { 1, 3, 5, 6 };
System.out.println(new Solution().searchInsert(arr, 5)); // 5 -> 2
System.out.println(new Solution().searchInsert(arr, 2)); // 2 -> 1
System.out.println(new Solution().searchInsert(arr, 7)); // 7 -> 4
System.out.println(new Solution().searchInsert(arr, 0)); // 0 -> 0
}
}
分享到:
相关推荐
- Search Insert Position: 在一个排序数组中查找一个目标值,如果不存在则返回应该插入的位置。 - Valid Sudoku: 验证一个9x9的数独是否有效。 - Sudoku Solver: 解数独问题,即给出一个部分填充的数独,要求填充...
- **查找插入位置(Search Insert Position)**: 在排序数组中查找一个数字的插入位置。 - **在排序数组中寻找范围(Search for a Range)**: 在排序数组中找到给定数字范围的位置。 - **查找矩阵中的位置(Search a 2D ...
第35题"搜索插入位置"(Search Insert Position)是一道典型的数组处理问题,它要求我们找到一个给定的目标值在排序数组中的合适插入位置,使得插入后数组仍然保持有序。下面我们将详细探讨这个问题以及如何使用C++...
这个资源聚焦于第35题,名为“搜索插入位置”(Search Insert Position)。LeetCode是一个在线平台,提供各种算法题目,帮助程序员提升技能,准备技术面试。以下是关于这个面试题及其解法的详细知识点: 1. **问题...
- Search Insert Position(搜索插入位置) - Search for a Range(搜索范围) - First Bad Version(第一个错误版本) - Search a 2D Matrix(二维矩阵中的搜索) - Search a 2D Matrix II(二维矩阵中的搜索...
* Search Insert Position:该题目要求在排序数组中查找元素,实现方法使用了二分查找算法。 * Longest Consecutive Sequence Java:该题目要求找到最长的连续序列,实现方法使用了哈希表和迭代算法。 * Search a 2D...
- **Search Insert Position**:在排序数组中查找目标值的插入位置。 2. **位操作(Bit Manipulation)**: - **Missing Number**:在一个整数序列中找出缺失的数字。 - **Power of Two**:判断一个整数是否为2...
48. Search Insert Position:在一个有序数组中找到一个数的位置,如果不存在则插入的位置。 49. Find Minimum in Sorted Rotated Array:在一个旋转排序数组中找到最小值。 50. Find Minimum in Rotated Sorted ...
(searchInsertPosition.js) 搜索 2D 矩阵 - 简单 (searchA2DMatrix.js) 搜索 2D 矩阵 ii - 中 (searchA2DMatrixII.js) 第一个错误版本 - 中等 (firstBadVersion.js) 查找峰值元素 - 中等 (findPeakElement.js) 在...
- "搜索插入位置"(Search Insert Position)是二分搜索的基础应用。 - 在"旋转排序数组中寻找最小值"(Find Minimum in Sorted Rotated Array)中,二分搜索也有其变种的应用。 以上知识点涵盖了LeetCode Java版的...
- Search Insert Position(搜索插入位置) - Find Minimum in Sorted Rotated Array(在排序旋转数组中查找最小值) 从文件中提取的信息点可以看出,"CleanCodeHandbook_v1.0.3" 是一个专注于指导如何编写清晰且...
1. **搜索插入位置(Search Insert Position)**:给定一个已排序的数组和一个目标值,在数组中找到目标值的位置,如果不存在返回插入的位置。 2. **寻找旋转排序数组中的最小值(Find Minimum in Rotated Sorted ...
- **搜索插入位置(Search Insert Position)**: 在一个排序数组中找到特定目标值应该被插入的位置。 - **寻找峰值元素(Find Peak Element)**: 给定一个未排序的数组,找到一个“峰值”元素,即其值大于相邻元素。 ##...
- Search Insert Position:在排序数组中查找目标值,并返回其索引。 - Search for a Range:在排序数组中搜索给定值的起始和结束位置。 - Find Peak Element:在一个整数数组中找到一个峰值元素。 - Median of Two ...
48. Search Insert Position:查找插入位置。 49. Find Minimum in Sorted Rotated Array:在一个排序旋转数组中查找最小值。 50. Find Minimum in Rotated Sorted Array II – With Duplicates:同上题,但在数组中...