题解 | #剪绳子#

剪绳子

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-11 17:45
门头沟学院 Java
走吗:别怕 我以前也是这么认为 虽然一面就挂 但是颇有收获!
点赞 评论 收藏
分享
10-28 11:04
已编辑
美团_后端实习生(实习员工)
一个2人:我说几个点吧,你的实习经历写的让人觉得毫无含金量,你没有挖掘你需求里的 亮点, 让人觉得你不仅打杂还摆烂。然后你的简历太长了🤣你这个实习经历看完,估计没几个人愿意接着看下去, sdk, 索引这种东西单拎出来说太顶真了兄弟,好好优化下简历吧
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务