Re: [闲聊] 每日LeetCode

楼主: yam276 ('_')   2023-10-06 11:29:37
343. Integer Break
把整数拆成相加的数字
取这些数字最大乘积
思路:
这题是数学题 不是程式题==
数字4拆成 2+2 积最大为 4
数字5拆成 3+2 积最大为 6
数字6拆成 3+3 积最大为 9
数字7拆为 3+4 积最大为 12
数字8拆为 3+3+2 积最大为 18
数字9拆为 3+3+3 积最大为 27
数字10拆为 3+3+4 积最大为 36
找规律可以得知拆成一堆3最大
并且3*3*4也比3*3*3*1大
因此n % 3 = 1要特别处理
Code:
impl Solution {
pub fn integer_break(n: i32) -> i32 {
match n {
2 => return 1,
3 => return 2,
_ => {}
}
let result = match n % 3 {
1 => 3i32.pow((n / 3 - 1) as u32) * 4,
2 => 3i32.pow((n / 3) as u32) * 2,
_ => 3i32.pow((n / 3) as u32),
};
result
}
}
作者: PyTorch (屁眼火炬)   2023-10-06 11:30:00
大师
作者: Rushia (みけねこ的鼻屎)   2023-10-06 12:01:00
大师
作者: NTHUlagka (拉卡)   2023-10-06 12:45:00
大师

Links booklink

Contact Us: admin [ a t ] ucptt.com