二分算法小练

1.给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。

var search = function(nums, target) {
    let lastnum=null;
    let nonnum=null;
    nums.map((item,index)=>{
        if(item===target){ 
            return lastnum=index
        }else{
           return nonnum=-1 
        }
    })
    if(lastnum||lastnum===0){
        return lastnum 
    }else{
        return nonnum
    }
};
//输入: nums = [-1,0,3,5,9,12], target = 9
//输出: 4

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

    let nums = [2,3,4]
    let target = 4
    
    var searchInsert=function(nums,target){
        //indexOf:检索元素在数组中的索引,存在则返回索引,不存在则返回-1
        let index = nums.indexOf(target)
        let result
        let newList = []
        if(index>-1){
            result = index
        } else {
            nums.push(target)
            newList = nums.sort(function(a,b){
                return a - b;
            })
            result = newList.indexOf(target)
        }
        return result
    };
    console.log(searchInsert(nums,target),'target')
 //输入: nums = [1,3,5,6], target = 5
 //输出: 2

附加一道小题目
3.给你一个数组,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。

var rotate =  function(nums,k){
  for(let i=0;i<k;i++){
  	nums.unshift(nums.pop())
  }
}
//输入: nums = [1,2,3,4,5,6,7], k = 3
//输出: [5,6,7,1,2,3,4]
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值