题目:Given a positive integer n, break it into the sum of at least two positive integers and maximize the product of those integers. Return the maximum product you can get.

For example, given n = 2, return 1 (2 = 1 + 1); given n = 10, return 36 (10 = 3 + 3 + 4).

Note: you may assume that n is not less than 2.

解释:

先看个穷举的规律,本题最核心的技巧或者说思路是 将数字拆分成2和3的乘积,因为 2*3 > 1*5; 3*3 > 1*6; 3*2*2 > 1*7; 2*2*2*2 > 1*8 .......所以拆分成2和3后,就能得到最大的乘积。

2 :1 , 1

3 :1 , 2

4 :2 , 2

5 :3 , 2

6 :3 , 3

7 :3 , 2 , 2

8 :3 , 3 , 2

9 :3 , 3 , 3

10 :3 , 3 , 2, 2

代码:

public class Solution {
  public int integerBreak(int n) {
    if (n == 2) return 1;
    if (n == 3) return 2;
    if (n % 3 == 0) return (int)Math.pow(3, n / 3);
    if (n % 3 == 1) return (int)Math.pow(3, (n - 4) / 3) * 4; // 有多少的3和4可以根据上面的穷举找到规律
  return (int)Math.pow(3, (n - 2) / 3) * 2;
  }
}

转载于:https://www.cnblogs.com/zhanht/p/5441605.html

LeetCode题解 343.Integer Break相关推荐

  1. leetcode 343. Integer Break | 343. 整数拆分(Java)

    题目 https://leetcode.com/problems/integer-break/ 题解 一开始以为,只要是 3 个数相加就可以,于是在错误的方向上越走越远: 后来发现并不只是 3 个数, ...

  2. LeetCode 343. Integer Break

    题目: Given a positive integer n, break it into the sum of at least two positive integers and maximize ...

  3. 343. Integer Break

    给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化. 返回你可以获得的最大乘积. 示例 1: 输入: 2 输出: 1 解释: 2 = 1 + 1, 1 × 1 = 1. 示例 ...

  4. Leetcode题解(超赞!!!)

    我是技术搬运工,好东西当然要和大家分享啦.原文地址 算法思想 二分查找 二分查找思想简单,但是在实现时有一些需要注意的细节: 在计算 mid 时不能使用 mid = (l + h) / 2 这种方式, ...

  5. Leetcode题解-算法-动态规划

    文章目录 1.斐波那契数列 1.1 爬楼梯 1.2 强盗抢劫 1.3 环形街道抢劫 2.矩阵路径 2.1 矩阵的最小的路径和 2.2 矩阵的总路径数 3.数组区间 3.1 数组区间和 3.2 数组中等 ...

  6. 32位有符号整数_008. 字符串转换整数 (atoi) | Leetcode题解

    点击上方"蓝色字体",选择"设为星标" 每天复习一道面试题,轻松拿大厂Offer~ 题目描述: 请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先 ...

  7. 【LeetCode题解】347_前K个高频元素(Top-K-Frequent-Elements)

    更多 LeetCode 题解笔记可以访问我的 github. 文章目录 描述 解法一:排序算法(不满足时间复杂度要求) Java 实现 Python 实现 复杂度分析 解法二:最小堆 思路 Java ...

  8. 008. 字符串转换整数 (atoi) | Leetcode题解

    点击上方"蓝色字体",选择"设为星标" 每天复习一道面试题,轻松拿大厂Offer~ 题目描述: 请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先 ...

  9. [LeetCode 题解]: Roman to Interger

    前言 [LeetCode 题解]系列传送门:  http://www.cnblogs.com/double-win/category/573499.html 1.题目描述 Given a roman ...

最新文章

  1. 中序非递归遍历二叉树
  2. 悉尼大学陶大程:遗传对抗生成网络有效解决GAN两大痛点
  3. Linux Centos6.5 SVN服务器搭建 以及客户端安装
  4. 使用maven编译YCSB0.1.4对cassandra进行性能测试
  5. ARCSDE的直接连接(SQLSERVER)
  6. codevs-2235
  7. Spring事务管理知识概述
  8. 让visio保存背景透明的图片。
  9. 2.6 定位数据不匹配
  10. iOS CoreData版本升级和数据库迁移
  11. python用于标识类方法的是_Python类的设计与使用
  12. android listview 只加载显示的图片大小,Android ListView只加载当前屏幕内的图片(解决list滑动时加载卡顿)...
  13. 4.看板方法---在五个季度内,从最差变为最好
  14. 【软件项目管理】期末复习
  15. 潮流计算机课设,(潮流计算的计算机算法课程设计范文.doc
  16. 电脑版微信多开显示网络代理服务器,电脑版微信多开办法,超级简单,一看就会...
  17. 复习一波,hashMap的底层实现原理
  18. 软件测试之黑盒测试方法介绍及测试用例练习
  19. Win10 升级使用 WSL2
  20. 2022年10月17日【Jiawei_Z】WPF的容器章节

热门文章

  1. JQ获取CKeditor的值
  2. 如何在我们项目中利用开源的图表(js chart)
  3. asp.net定时执行任务-解决应用池回收问题----转载
  4. 《The Art of Readable Code》学习笔记(一)
  5. Linux内核的裁剪和移植
  6. Visual Studio 2017新版发布,极大提高开发效率丨附下载 1
  7. C++11标准库 - array
  8. javascript 文件的同步加载与异步加载
  9. redhat5中架设DHCP服务器与DHCP中继
  10. Linux 脚本、 正则表达式 等