蓝桥杯web前端题目解答记录

一、找出数组中重复的数字

在一个长度为 n 的数组 nums 里的所有数字都在 0 ~ n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。
function findRepeatNumber(nums) {
  let len = nums.length
  for(let i = 0; i < len; i++) {
    if(nums.indexOf(nums[i], i + 1) != -1) {
        return nums[i]
    }
  }
}

二、两数之和

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出和为目标值 target 的那两个整数,并返回它们的数组下标。

我的答案

function twoSum(nums, target) {
  let len = nums.length
  for(let i = 0; i < len; i++) {
    for(let j = i + 1; j < len; j++) {
        if(nums[i] + nums[j] == target) {
            return [i, j]
        }
    }
  }
}

其他人的答案(很巧妙),反向思维

for (let i = 0; i < nums.length; i++) {
        let index = nums.indexOf(target - nums[i], i + 1)
        if (index != -1) {
            return [i, index]
        }
    }

三、移除元素

给你一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,并返回移除后数组的新长度(需要改变原数组)。

我的答案:i–,防止数组删除后跳级

function removeElement (nums, val) {
  for(let i = 0; i < nums.length; i++) {
    if(nums[i] === val) {
        nums.splice(i, 1)
        i--  
    }
  }
  return nums.length
}

其他人的答案(很巧妙):nums.splice(0)执行后,nums就变成了一个空数组[]

function removeElement(nums, val) {
    return nums.push(...nums.splice(0).filter(x => x != val))
}

以上试题来自 蓝桥杯官网

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值