343. 整数拆分

这篇具有很好参考价值的文章主要介绍了343. 整数拆分。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

原题链接:

343. 整数拆分

https://leetcode.cn/problems/integer-break/description/

完成情况:

343. 整数拆分,# LeetCode题解,leetcode

解题思路:

	 解题思路:
	    如何使面积最大呢?  -> 毫无疑问,肯定是正方形
	    那么每次我就尝试以均等切分,保存当前的合,
	    然后迭代求和最大值和最小值,产生一个新的均值

	 举例:
	    10
	    5*5  ->25
	    5*3*2 ->30
	    【5和2合并再均分】
	    4*3*3  ->36
	    【4和3合并再均分】,与前面【5和2合并再均分】产生的合相同,故结束。
	    Max算计算过得哪个值最大。

贴一张对比数据图,大家可以自行验证,是否上述规律会得到正确答案。文章来源地址https://www.toymoban.com/news/detail-632399.html

class Solution {
    public int integerBreak(int n) {
        if (n == 2) return 1;
        else if (n == 3) return 2;
        else if (n == 4) return 4;
        else if (n == 5) return 6;
        else if (n == 6) return 9;
        else if (n == 7) return 12;
        else if (n == 8) return 18;
        else if (n == 9) return 27;
        else if (n == 10) return 36;
        else if (n == 11) return 54;
        else if (n == 12) return 81;
        else if (n == 13) return 108;
        else if (n == 14) return 162;
        else if (n == 15) return 243;
        else if (n == 16) return 324;
        else if (n == 17) return 486;
        else if (n == 18) return 729;
        else if (n == 19) return 972;
        else if (n == 20) return 1458;
        else if (n == 21) return 2187;
        else if (n == 22) return 2916;
        else if (n == 23) return 4374;
        else if (n == 24) return 6561;
        else if (n == 25) return 8748;
        else if (n == 26) return 13122;
        else if (n == 27) return 19683;
        else if (n == 28) return 26244;
        else if (n == 29) return 39366;
        else if (n == 30) return 59049;
        else if (n == 31) return 78732;
        else if (n == 32) return 118098;
        else if (n == 33) return 177147;
        else if (n == 34) return 236196;
        else if (n == 35) return 354294;
        else if (n == 36) return 531441;
        else if (n == 37) return 708588;
        else if (n == 38) return 1062882;
        else if (n == 39) return 1594323;
        else if (n == 40) return 2125764;
        else if (n == 41) return 3188646;
        else if (n == 42) return 4782969;
        else if (n == 43) return 6377292;
        else if (n == 44) return 9565938;
        else if (n == 45) return 14348907;
        else if (n == 46) return 19131876;
        else if (n == 47) return 28697814;
        else if (n == 48) return 43046721;
        else if (n == 49) return 57395628;
        else if (n == 50) return 86093442;
        else if (n == 51) return 129140163;
        else if (n == 52) return 172186884;
        else if (n == 53) return 258280326;
        else if (n == 54) return 387420489;
        else if (n == 55) return 516560652;
        else if (n == 56) return 774840978;
        else if (n == 57) return 1162261467;
        else return 1549681956;
    }
}

参考代码:

package 西湖算法题解___中等题;

public class __343整数拆分 {
	public int integerBreak(int n) {
		//2 <= n <= 58
		//只要前一个结果,跟后一个结果有关系的题目 ,基本上都可以使用到dp
		int dp_splitMaxArea [] = new int[n+1];
		//2 <= n <= 58
		/**
		 解题思路:
		    如何使面积最大呢?  -> 毫无疑问,肯定是正方形
		    那么每次我就尝试以均等切分,保存当前的合,
		    然后迭代求和最大值和最小值,产生一个新的均值

		 举例:
		    10
		    5*5  ->25
		    5*3*2 ->30
		    【5和2合并再均分】
		    4*3*3  ->36
		    【4和3合并再均分】,与前面【5和2合并再均分】产生的合相同,故结束。
		    Max算计算过得哪个值最大。
		 */
		for (int i=2;i<=n;i++){
			int curMax = 0;
			for (int j=1;j<i;j++){
				curMax = Math.max(curMax,Math.max(j*(i-j),j * dp_splitMaxArea[i-j]));
			}
			dp_splitMaxArea[i] = curMax;
		}
		return dp_splitMaxArea[n];
	}
}

到了这里,关于343. 整数拆分的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【LeetCode题目详解】第九章 动态规划part03 343. 整数拆分 96.不同的二叉搜索树 (day41补)

    给定一个正整数  n  ,将其拆分为 k 个 正整数 的和(  k = 2  ),并使这些整数的乘积最大化。 返回 你可以获得的最大乘积  。 示例 1: 示例 2: 提示: 2 = n = 58 看到这道题目,都会想拆成两个呢,还是三个呢,还是四个.... 我们来看一下如何使用动规来解决。 # 动态规划 动

    2024年02月10日
    浏览(43)
  • 343. 整数拆分(动态规划)

    给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k = 2 ),并使这些整数的乘积最大化。 返回 你可以获得的最大乘积 。 示例 1: 输入: n = 2 输出: 1 解释: 2 = 1 + 1, 1 × 1 = 1。 示例 2: 输入: n = 10 输出: 36 解释: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36。 提示: 2 = n = 58 本题比之前面的动态规划

    2024年01月20日
    浏览(48)
  • 343. 整数拆分

    343. 整数拆分 https://leetcode.cn/problems/integer-break/description/ 贴一张对比数据图,大家可以自行验证,是否上述规律会得到正确答案。

    2024年02月14日
    浏览(42)
  • 【力扣】343. 整数拆分 <动态规划、数学>

    给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k = 2 ),并使这些整数的乘积最大化。返回可以获得的最大乘积 。 示例 1: 输入: n = 2 输出: 1 解释: 2 = 1 + 1, 1 × 1 = 1。 示例 2: 输入: n = 10 输出: 36 解释: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36。 提示: 2 = n = 58 动态规划 确定 dp 数组以及下

    2024年02月09日
    浏览(42)
  • 算法训练第四十一天|343. 整数拆分 、96.不同的二叉搜索树

    题目链接:343. 整数拆分 参考:https://programmercarl.com/0343.%E6%95%B4%E6%95%B0%E6%8B%86%E5%88%86.html 题目描述 给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。 示例 1: 输入: 2 输出: 1 解释: 2 = 1 + 1, 1 × 1 = 1。 示例 2: 输入:

    2023年04月24日
    浏览(40)
  • Java | Leetcode Java题解之第13题罗马数字转整数

    题目: 题解:

    2024年04月09日
    浏览(42)
  • 我在代码随想录|写代码Day33 | 动态规划| 路径问题| 62.不同路径,63. 不同路径 II,343. 整数拆分

    🔥博客介绍`: 27dCnc 🎥系列专栏: 数据结构与算法 算法入门 C++项目 🎥 当前专栏: 算法入门 专题 : 数据结构帮助小白快速入门算法 👍👍👍👍👍👍👍👍👍👍👍👍 ☆*: .。. o(≧▽≦)o .。.:*☆ ❤️感谢大家点赞👍收藏⭐评论✍️ 今日学习打卡 代码随想录 - 动态规划

    2024年03月11日
    浏览(58)
  • 【LeetCode题目详解】1281题 整数的各位积和之差 面试题 01.01. 判定字符是否唯一 python题解(作业一二)

    问题描述: 1281. 整数的各位积和之差 给你一个整数 n,请你帮忙计算并返回该整数「各位数字之积」与「各位数字之和」的差。 示例 1: 输入:n = 234 输出:15 解释: 各位数之积 = 2 * 3 * 4 = 24 各位数之和 = 2 + 3 + 4 = 9 结果 = 24 - 9 = 15 示例 2: 输入:n = 4421 输出:21 解释:

    2024年02月10日
    浏览(48)
  • LeetCode第343场周赛

    2023.4.30LeetCode第343场周赛 根据题意模拟 使用哈希表记录每个数出现的位置,再用m+n个集合记录每一行和每一列被涂满的格子数,若某行或某列全部被涂满则返回答案 BFS 首先将距离大于两点的曼哈顿距离的特殊路径去掉 每个点考虑经过每个特殊路径到达,分成两段,一段是当

    2024年02月02日
    浏览(40)
  • LeetCode 周赛 343(2023/04/30)结合「下一个排列」的贪心构造问题

    本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 提问。 大家好,我是小彭。 今天是五一假期的第二天,打周赛的人数比前一天的双周赛多了,难道大家都只玩一天吗?这场周赛是 LeetCode 第 343 场单周赛,如果不考虑第一题摆烂的翻译,整体题目质量还是

    2024年02月02日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包