LeetCode(剑指 Offer)- 14- I. 剪绳子
Posted 放羊的牧码
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode(剑指 Offer)- 14- I. 剪绳子相关的知识,希望对你有一定的参考价值。
题目链接:点击打开链接
题目大意:略
解题思路
- ① 当所有绳段长度相等时,乘积最大。② 最优的绳段长度为 3
-
最优: 3 。把绳子尽可能切为多个长度为 3 的片段,留下的最后一段绳子的长度可能为 0,1,2 三种情况
次优: 2 。若最后一段绳子长度为 2 ;则保留,不再拆为 1+1
最差: 1 。若最后一段绳子长度为 1 ;则应把一份 3+1 替换为 2+2,因为 2 * 2 > 3×1 -
最后一种贪心思想可以理解为数学归纳法
相关企业
- 字节跳动
- 谷歌(Google)
- 亚马逊
AC 代码
- Java
class Solution
public int cuttingRope(int n)
if(n <= 3) return n - 1;
int a = n / 3, b = n % 3;
if(b == 0) return (int)Math.pow(3, a);
if(b == 1) return (int)Math.pow(3, a - 1) * 4;
return (int)Math.pow(3, a) * 2;
- C++
class Solution
public:
int cuttingRope(int n)
if(n <= 3) return n - 1;
int a = n / 3, b = n % 3;
if(b == 0) return pow(3, a);
if(b == 1) return pow(3, a - 1) * 4;
return pow(3, a) * 2;
;
以上是关于LeetCode(剑指 Offer)- 14- I. 剪绳子的主要内容,如果未能解决你的问题,请参考以下文章
算法---- Leetcode剑指offer-Java版题解