一天一大 leet(搜索插入位置)难度:简单-Day20200717
时间:2022-07-25
本文章向大家介绍一天一大 leet(搜索插入位置)难度:简单-Day20200717,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
题目:
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。
示例:
- 示例 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
抛砖引玉
- 这样太简单了吧直接循环相等的就返回索引
- 小于就记录索引+1
- 大于就直接终止循环
撸起
/**
* @param {number[]} nums
* @param {number} target
* @return {number}
*/
var isBipartite = function (graph) {
let _result = 0
nums.some(function (val, index) {
if (val === target) {
_result = index
} else if (val <= target) {
_result = index + 1
} else {
return true
}
})
return _result
}
这个 时间 13.3% ,内存 8.7%是什么意思
优化
使用二分法查找优化下查找的逻辑
/**
* @param {number[]} nums
* @param {number} target
* @return {number}
*/
var searchInsert = function (nums, target) {
let len = nums.length,
_result = len,
left = 0,
right = len - 1
while (left <= right) {
let index = parseInt((right - left) / 2, 10) + left
if (target <= nums[index]) {
_result = index
right = index - 1
} else {
left = index + 1
}
}
return _result
}
优化了时间 那空间呢,减少下中间的变量,遇到结果就直接返回
/**
* @param {number[]} nums
* @param {number} target
* @return {number}
*/
var searchInsert = function (nums, target) {
let left = 0,
right = nums.length - 1,
index = 0
while (left <= right) {
index = parseInt((right - left) / 2, 10) + left
if (nums[index] === target) return index
if (left === right) return nums[index] > target ? index : index + 1
if (target > nums[index]) left = index + 1
else right = index
}
}
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 《剑指offer》第13天:两个数组的交集
- Spring的Controller是单例还是多例?怎么保证并发的安全
- JQUERY获取loaded 宽高这么变态
- 动态规划的楼层算法
- 58.Vue 使用render方法渲染组件
- xinetd被动服务唤醒
- Bash特殊变量:$0, $#, $*, $@, $?, $$实战
- 0799-1.8-CDSW1.8的新功能
- socket.io实践干货
- 0800-5.16.2-如何禁用Hue中Oozie的部分Action
- linux ulimit 调优
- 初识ABP vNext(3):vue对接ABP基本思路
- 0801-什么是Apache Ranger - 4 - Resource vs Tag Based Policies
- IDA-3D技术细节分析
- 0802-Cloudera Data Center7.1.3正式GA