字节跳动经典算法题:给定一个数n如23121;给定一组数字a如[2 4 9]求由a中元素组成的小于n的最大数

本文介绍了一道字节跳动的经典算法面试题,旨在寻找由指定数字集构成的、小于给定数字的最大数。文章详细阐述了解题思路,并提供了一个JavaScript实现示例。

字节跳动经典算法题(提问次数最多)

题目描述:给定一个数n如23121;给定一组数字a,如[2 4 9];求由a中元素组成的小于n的最大数。
思路分析:暴力分析手法
1. 判断该位的数值是否在数字a中;
2. 如果存在继续判断下一位;
3. 如果不存在,则判断该位在数字中的大小,选择小于该位的最大数存入结果数组中,若该值小于数字a中的所有值,则返回前一位,选择小于前一位的最大数存入结果数组中,以此类推,后续位置添补数字a中的最大值。
这里使用了二分查找方法searchInsert (),但有所更改,查询目标值是否在给定的一组数字中,存在则返回该值,不存在则返回小于目标值的最大值,如果没有则返回0。
可使用C++、Java、JavaScript、Python等语言,这里使用最简便的JavaScript脚本语言。
/*
 *给定一个数n如23121;给定一组数字a如[2 4 9]求由a中元素组成的小于n的最大数
 */
var n = 23121; var n1 = 121; var n2 = 99; var n3 = 201;n4 = 20002; n5 = 250;n6 = 215;
var a = [2,4,9]
var MaxNum = function(nums, arr){
   
   
    // let arr = Array.from(array)  // 将object转换成数组
    if(arr.length == 0){
   
       // 如果数字长度为0,返回-1
        return -1
    }
    // 给定数字变为数组形式。
    var num = (nums).toString().split('')
    console.log('在给定元素中组成的小于' + num.join('') + '的最大数为:')
    <
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值