题解 | #买橘子#

买橘子

https://www.nowcoder.com/practice/73e0552b78474a9086781e47f4e01d73

首先一定是每袋8个装的越多最终需要买的袋数就越少

所以循环从买0袋6六个装的开始迭代,第一个满足条件的一定就是最优解。

时间复杂度O(n),空间复杂度O(1)

如果从买0袋八个装的开始迭代,需要循环结束,数组的最后一位元素才是最优解

时间复杂度O(n),空间复杂度O(n)

const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void async function () {
    // Write your code here
    let line = await readline()
    console.log(fn(line))
}()
function fn(n){
    if(n < 6 || n % 2 !== 0) return -1

    //从到买0袋6个装开始
    for(i = 0;i < n/6 ;i++){
        let _n = n-(i*6)
        if(_n % 8 === 0){
            return i + _n/8
        }
    }
    return -1
    //从到买0袋8个装开始
    //let res = []
    //for(i = 0;i < n/8 ;i++){
    //    let _n = n-(i*8)
    //    if(_n % 6 === 0){
    //        res.push(i + _n/6) 
    //    }
    //}
    //return res[res.length-1]
}


全部评论
啊,我思路错了,还是从买n/8个开始枚举递减更快
点赞 回复 分享
发布于 2025-07-19 22:58 四川

相关推荐

程序员花海:实习和校招简历正确格式应该是教育背景+实习+项目经历+个人评价 其中项目经历注意要体现业务 实习经历里面的业务更是要自圆其说 简历模板尽可能保持干净整洁 不要太花哨的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务