字节跳动,腾讯大厂面试专题——力扣(35)搜索插入位置
2020-09-06 本文已影响0人
纯粹的少年
题目
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
例如:
输入: [1,3,5,6], 5
输出: 2
解题思路
- 根据题目我们可以知道给定一个排序的数组,在里面插入一一条数据,如果有这个数字,就返回当前数字的下标,如果没有,就插入并且返回该数字。
- 这时候我们可以根据对象的特性,我们可以把数组的每一项当做对象的key值放入对象。
- 然后我们把目标值,放入到对象中。
- 之后我们遍历对象,把所有的key放入到新数组中。
- 有趣的是,这样我们还需要考虑到负数的情况,负数就前增,正数后增
- 然后我们返回这个数组中检索的target位置就完成了整个需求。
var searchInsert = function (nums, target) {
var new_arr = []
var obj = {};
for (var i = 0; i < nums.length; i++) {
obj[nums[i]] = nums[i];
}
obj[target] = target;
for(var attr in obj){
if(parseInt(attr)<0){
new_arr.unshift(attr);
}else{
new_arr.push(attr)
}
}
return new_arr.map(Number).indexOf(target)
};