Search Insert Position:查找插入的位置

[ 问题: ]

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
    }
}

更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/sjjg/

②. 二分查找:时间复杂度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
    }
}

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索数组
, int
, return
, system
, target
println
,以便于您获取更多的相关知识。

时间: 2025-01-19 18:10:25

Search Insert Position:查找插入的位置的相关文章

[LeetCode]35.Search Insert Position

[题目] 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]

LeetCode 35 Search Insert Position(搜索并插入)

翻译 给定一个已排序的数组和一个目标值,如果这个目标值能够在数组中找到则返回索引.如果不能,返回它应该被插入的位置的索引. 你可以假设数组中没有重复项. 以下是一些示例. 原文 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 ma

Search Insert Position

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 →

OCP1z0-047 : 多表插入――pivoting insert(旋转插入)

这道题目的知识点是要了解Oracle 中的Insert用法 A.pivoting insert(旋转插入) 1.创建表marks_details gyj@OCM> create table marks_details ( 2 student_id number(4) not null, 3 subject_id1 number(2), 4 marks_english number(3), 5 subject_id2 number(2), 6 marks_math number(3), 7 sub

php通过strpos查找字符串出现位置的方法

 这篇文章主要介绍了php通过strpos查找字符串出现位置的方法,实例分析了strpos的功能及使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了php通过strpos查找字符串出现位置的方法.分享给大家供大家参考.具体分析如下: strpos用来查找一个字符串在另一个字符串中首次出现的位置,strpos区分大小写,如果没有找到则返回false,所以strpos有两种类型的返回值,一种是整形,一种是bool型,开发过程中需要注意 ? 1 2 3 <?php echo

数据库-sqlserver 获取insert语句自动插入的id

问题描述 sqlserver 获取insert语句自动插入的id 有的人说 用 SELECT @@IDENTITY 查最新一条插入的就可以了. 但是如果同时有人插入了一个数据 怎么办 那获取到的不就是另一个 插入的id了? 解决方案 SELECT SCOPE_IDENTITY()http://msdn.microsoft.com/zh-cn/library/ms190315.aspx

PHP+MySQL之Insert Into数据插入用法分析_php技巧

本文实例讲述了PHP+MySQL之Insert Into数据插入用法.分享给大家供大家参考.具体如下: INSERT INTO 语句用于向数据库表中插入新纪录. 向数据库表插入数据 INSERT INTO 语句用于向数据库表添加新纪录. 语法: INSERT INTO table_name VALUES (value1, value2,....) 您还可以规定希望在其中插入数据的列: INSERT INTO table_name (column1, column2,...) VALUES (va

php通过strpos查找字符串出现位置的方法_php技巧

本文实例讲述了php通过strpos查找字符串出现位置的方法.分享给大家供大家参考.具体分析如下: strpos用来查找一个字符串在另一个字符串中首次出现的位置,strpos区分大小写,如果没有找到则返回false,所以strpos有两种类型的返回值,一种是整形,一种是bool型,开发过程中需要注意 <?php echo strpos("Hello world!","wo"); ?> 输出结果:6 由于strpos有两种类型的返回值,所以在判断是否找到子

objective c语法-OC-NSString中,写了一个在母串中查找子串的位置,但是检索的信息有遗漏,请问是哪儿出现了问题?

问题描述 OC-NSString中,写了一个在母串中查找子串的位置,但是检索的信息有遗漏,请问是哪儿出现了问题? NSString * motherstr = @"w is w is w"; NSString * sonstr = @"w"; NSRange range = [motherstr rangeOfString:sonstr]; while(range.location != NSNotFound) { NSLog(@"start = %@&q