栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

leetcode 剑指 Offer 14- II. 剪绳子 II 动态规划+大数操作

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

leetcode 剑指 Offer 14- II. 剪绳子 II 动态规划+大数操作

https://leetcode-cn.com/problems/jian-sheng-zi-ii-lcof/

思路比较简单。但该题的取值范围较大,直接使用int会溢出。

最直接的想法,用JAVA中的大数操作。

import java.math.*;

class Solution {

    BigInteger[] dp = new BigInteger[1005];
    BigInteger zero = new BigInteger("0");
    BigInteger one = new BigInteger("1");
    BigInteger two = new BigInteger("2");
    BigInteger three = new BigInteger("3");

    public int cuttingRope(int n) {
        BigInteger N = new BigInteger(""+n);// 构建时输入的时字符串
        dp[0] = zero;
        dp[1] = one;
        dp[2]= one;
        dp[3]= two;
        DP(N);
        BigInteger mod = new BigInteger("1000000007");
        return dp[n].mod(mod).intValue();// intValue

    }

    private BigInteger DP(BigInteger n){
         int nv = n.intValue();// BigInteger 不能直接当int使用
        if(dp[nv]== null){
            dp[nv] = zero;
           
            for(int i =1;i 

其他常见的操作

int intValue() 返回大整数的整型值
long longValue() 返回大整数的long型值
BigInteger max(BigInteger val) 返回两个大整数的最大者
BigInteger min(BigInteger val) 返回两个大整数的最小者
BigInteger mod(BigInteger val) 用当前大整数对val求模

BigInteger negate() 返回当前大整数的相反数
BigInteger abs()  返回大整数的绝对值

# 加减乘除
BigInteger add(BigInteger val) 返回两个大整数的和
BigInteger subtract(BigInteger val)返回两个大整数相减的结果

BigInteger multiply(BigInteger val) 返回两个大整数的积

BigInteger divide(BigInteger val)  返回两个大整数的商
BigInteger remainder(BigInteger val) 返回当前大整数除以val的余数
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/439474.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号