dtcms Kafka html linq grails hive gulp webpack视频 小程序demo源码 jquery延时 录音棚设备一套多少钱 oracle删除字段 oracle查看数据库 js字符串排序 matlab颜色代码 mser算法 axure时间选择控件 hbuilder插件 python网络编程 python的array python查找指定字符 javaqueue java包 java编程基础 java编译 java最新框架 java设置 java开发者 java接口怎么写 java创建文件 java注释规范 linux的find 怎么装linux系统 linux的安装 tmac修改器 黑客攻防实战入门 java程序设计基础 免费家谱制作软件 eml文件阅读器下载 编辑软件
当前位置: 首页 > 学习教程  > 编程语言

数组 之 搜索插入位置

2020/7/24 9:34:29 文章标签:

题目

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

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

提示:

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

JavaScript实现

当数组的第一个数如果大于了目标值,则这个数插入的位置是第一位,循环整个数组,当发现数组中有大于目标值的数,则插入位置是大于目标值的当前位置,如果数组中没有大于目标值的数,那么插入的位置就是这个数组的长度

var searchInsert = function(nums, target) {
    if (nums[0] > target) {
        return 0;
    }
    for (let i = 0; i < nums.length; i++) {
        if (nums[i] >= target) {
            return i;
        }
    }
    return nums.length;

    
};

Java实现

首先我们派出两种特殊情况:目标值小于数组第一个元素的情况;目标值大于数组最后一个元素的情况。然后我们还有两种情况:目标值等于数组元素值;目标值在数组中不存在,我们需要获取插入的位置。我们可以通过遍历数组找出这两种情况对应的索引值。

public int searchInsert(int[] nums, int target) {
    	//排除目标值小于数组第一个元素的情况
        if(target<nums[0]){
            return 0;
        }
        //排除目标值大于数组最后一个元素的情况
        if(target>nums[nums.length-1]){
            return nums.length;
        }
        //遍历出目标值所在位置
        for(int i = 0; i < nums.length; i++) {
        	//如果数组中存在目标值,找出相等的位置
            if(target == nums[i]){
                return i;
            }
            //如果没有相等值,找出可插入的位置
            //可插入位置为大于前一个元素,小于后一个元素
            if(nums[i] < target && target < nums[i+1]){
                return i+1;
            }
        }
        return -1;
    }

 


本文链接: http://www.dtmao.cc/news_show_50136.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?