题解 | #剪绳子#

剪绳子

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#
全部评论

相关推荐

10-17 12:16
同济大学 Java
7182oat:快快放弃了然后发给我,然后让我也泡他七天最后再拒掉,狠狠羞辱他一把😋
点赞 评论 收藏
分享
Yushuu:你的确很厉害,但是有一个小问题:谁问你了?我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了😆
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务