LeetCode(算法)- 343. 整数拆分

Posted 放羊的牧码

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode(算法)- 343. 整数拆分相关的知识,希望对你有一定的参考价值。

题目链接:点击打开链接

题目大意:

解题思路

  •  ① 当所有绳段长度相等时,乘积最大。② 最优的绳段长度为 3
  • 最优: 3 。把绳子尽可能切为多个长度为 3 的片段,留下的最后一段绳子的长度可能为 0,1,2 三种情况
    次优: 2 。若最后一段绳子长度为 2 ;则保留,不再拆为 1+1 
    最差: 1 。若最后一段绳子长度为 1 ;则应把一份 3+1 替换为 2+2,因为 2 * 2 > 3×1

  • 最后一种贪心思想可以理解为数学归纳法

相关企业

  • 字节跳动
  • 谷歌(Google)
  • 亚马逊
  • Facebook

AC 代码

  • Java
class Solution 
    public int integerBreak(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 integerBreak(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(算法)- 343. 整数拆分的主要内容,如果未能解决你的问题,请参考以下文章

DP-03动态规划算法题目解析

DP-03动态规划算法题目解析

LeetCode 343. 整数拆分 | Python

leetcode:减绳子/整数拆分

LeetCode 343.整数拆分 - JavaScript

LeetCode-343. 整数拆分