搜索插入位置(Java实现)

简介: 搜索插入位置(Java实现)

搜索插入位置(Java实现)


给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。


你可以假设数组中无重复元素。

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

我的思路很简单,就是先遍历查找,借助数据结构ArrayList,如果找到就返回下标;找不到就add进ArrayList中,然后对ArrayList排序,使用indexOf(target)来返回target的下标即可。

代码实现之:

package Day49;
import java.util.ArrayList;
import java.util.Collections;
/**
 * @Author Zhongger
 * @Description 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
 * 你可以假设数组中无重复元素。
 * @Date 2020.3.23
 */
public class SearchInsertSolution {
    public static void main(String[] args) {
        int[] nums={1,3,5,6};
        int target=7;
        System.out.println(new SearchInsertSolution().searchInsert(nums, target));
    }
    public int searchInsert(int[] nums, int target) {
        if (nums==null){
            return -1;
        }
        if (nums.length<=0){
            return -1;
        }
        ArrayList<Integer> list = new ArrayList<>();
        for (int i = 0; i < nums.length; i++) {
            list.add(nums[i]);
            if (target==nums[i]){
                return i;
            }
        }
        list.add(target);
        Collections.sort(list);
        return list.indexOf(target);
    }
}


还有一种方法就是二分查找法,简单得很:

  public int searchInsert2(int[] nums, int target) {
        int left = 0, right = nums.length - 1;
        while(left <= right) {
            int mid = (left + right) / 2;
            if(nums[mid] == target) {
                return mid;
            } else if(nums[mid] < target) {
                left = mid + 1;
            } else {
                right = mid - 1;
            }
        }
        return left;
    }


相关文章
|
19天前
|
存储 Java
百度搜索:蓝易云【Java语言之float、double内存存储方式】
由于使用IEEE 754标准进行存储,float和double类型可以表示非常大或非常小的浮点数,并且具有一定的精度。然而,由于浮点数的特性,它们在进行精确计算时可能会存在舍入误差。在编写Java程序时,需要注意使
61 0
|
6天前
|
存储 Java 数据库连接
从 0 实现一个文件搜索工具 (Java 项目)
从 0 实现一个文件搜索工具 (Java 项目)
47 17
|
19天前
|
算法 Java
BFS(广度搜索|宽度搜索)无向图遍历(JAVA手把手深入解析)
BFS(广度搜索|宽度搜索)无向图遍历(JAVA手把手深入解析)
56 0
|
19天前
|
数据采集 算法 Java
DFS(深度搜索)无向图遍历(JAVA手把手深入解析)
DFS(深度搜索)无向图遍历(JAVA手把手深入解析)
48 0
|
19天前
|
Java Docker 容器
百度搜索:蓝易云【Docker使用之java项目工程的部署】
通过以上步骤,你已经成功在Docker中部署了Java项目工程。这样可以确保你的应用在不同环境中具有一致的运行结果,并且方便地进行部署和管理。
41 7
|
19天前
|
Rust 索引
Rust 编程小技巧摘选(5)
Rust 编程小技巧摘选(5)
45 0
Rust 编程小技巧摘选(5)
|
19天前
|
C++ Java Go
Java每日一练(20230428) 搜索旋转排序数组、栈实现队列、平方根
Java每日一练(20230428) 搜索旋转排序数组、栈实现队列、平方根
51 0
Java每日一练(20230428) 搜索旋转排序数组、栈实现队列、平方根
|
19天前
|
Java Go C++
Java每日一练(20230421) 整数排列、数组排序、单词搜索
Java每日一练(20230421) 整数排列、数组排序、单词搜索
27 0
Java每日一练(20230421) 整数排列、数组排序、单词搜索
|
19天前
|
Java Go C++
Java每日一练(20230417) N 皇后、搜索二维矩阵、发奖金问题
Java每日一练(20230417) N 皇后、搜索二维矩阵、发奖金问题
27 0
Java每日一练(20230417) N 皇后、搜索二维矩阵、发奖金问题
|
19天前
|
Java
Java实现1.指定关键字搜索 2.指定后缀名搜索 3.文件/文件夹复制
Java实现1.指定关键字搜索 2.指定后缀名搜索 3.文件/文件夹复制
27 1