题解 | #剪绳子#

剪绳子

https://www.nowcoder.com/practice/57d85990ba5b440ab888fc72b0751bf8

  1. 假设分成3段,然后计算. 1,1,1. 2,2,2 3,3,2 ,最终找到3,3,2 这种切法
  2. 核心思想是,分成m段时,尽量将每段都分得均匀,这样乘积才是最大的。最后筛选出最大值

struct Solution {}

impl Solution {
    fn new() -> Self {
        Solution {}
    }

    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param n int整型
     * @return int整型
     */
    pub fn cutRope(&self, n: i32) -> i32 {
        // write code here

        let mut res = n - 1;
        for m in 2..n as usize {
            let mut tmp = Vec::with_capacity(m);
            // 初始化tmp的元素为0
            for _ in 0..m {
                tmp.push(0);
            }
            let mut i = n;
            let mut index = 0usize;
            while i > 0 {
                if let Some(v) = tmp.get_mut(index) {
                    *v += 1;
                    i -= 1;
                    index += 1;
                    index %= m;
                }
            }
            // 计算tmp val的乘积
            let mut tmp_res = 1;
            for i in &tmp {
                tmp_res *= i;
            }
            if tmp_res > res {
                res = tmp_res;
                println!("{:?}", tmp);
            }
        }
        res
    }
}

#rust#
全部评论

相关推荐

叶扰云倾:进度更新,现在阿里云面完3面了,感觉3面答得还行,基本都答上了,自己熟悉的地方也说的比较细致,但感觉面试官有点心不在焉不知道是不是不想要我了,求阿里收留,我直接秒到岗当阿里孝子,学校那边的房子都退租了,下学期都不回学校,全职猛猛实习半年。这种条件还不诱人吗难道 然后现在约到了字节的一面和淘天的复活赛,外加猿辅导。华为笔试完没动静。 美团那边之前投了个base广州的,把我流程卡麻了,应该是不怎么招人,我直接简历挂了,现在进了一个正常的后端流程,还在筛选,不知道还有没有hc。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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