LeetCode 刷题【62. 不同路径】

62. 不同路径

自己做

解:公式计算(溢出处理)

cpp 复制代码
class Solution {
public:
    int uniquePaths(int m, int n) {
        int res = 1;
        bool is_all_div = false;        //标记n - 1的阶乘是否全部被除了
        vector<bool> div(n - 2, false); //标记除数(从2到n - 1,除以1没有意义,这里省略)
 
        for(int i = m; i < n + m - 1; i++){
            int number = i;

            //应除尽除【这里是为了防止多个乘数溢出的情况,那么在乘之前就先尽可能和除数相除】
            for(int j = n - 3; j >= 0; j--){
                if(!div[j] && number % (j + 2) == 0){     //发现有可以整除的除数
                    number /= (j + 2);
                    div[j] = true;                      //标记该数已经取过
                }
            }

            res *= number;

            //应除尽除【经过上面的计算,除数不一定能被完全除玩,因为可能存在上一个余数是2,下一个余数是3,而始终没有一个乘数可以和除数6整除,但事实上,2*3就可以被6整除,而2*3的存放地方就是结果res这里】
            for(int j = n - 3; j >= 0; j--){
                if(!div[j] && res % (j + 2) == 0){     //发现有可以整除的除数
                    res /= (j + 2);
                    div[j] = true;                      //标记该数已经取过
                }
            }

        }

        return res;

    }
};
相关推荐
find1star6 小时前
LeetCode 141:环形链表
java·算法·leetcode·链表
迅翼SwiftWing7 小时前
编队系列(总)|固定翼编队如何实现稳定飞行?通信架构、协同算法与工程约束深度解析
算法·架构
LB21127 小时前
力扣160 21 86
算法·leetcode·职场和发展
小智老师PMP8 小时前
2026深度解析|PMP第八版与NPDP核心侧重点本质区别(管理类证书怎么选)
开发语言·分布式·算法·职场和发展·产品经理
HugoStudio_SWAN8 小时前
洛谷 B4450 / B3867 / B3923 智慧购物、储蓄与做题——从程序到生活
c++·学习·程序人生·算法·生活
a187927218318 小时前
【算法】动态规划第二篇:双序列 DP 三课——继承、计步与断链
算法·leetcode·动态规划·dp·回溯·暴力·算法讲解
江畔柳前堤9 小时前
前台·中台·后台:2026年AI原生时代的架构全景图
开发语言·人工智能·算法·机器学习·架构·scala·ai-native
职场的momo9 小时前
字节生活服务海量内推,挑战亿级订单与AI交易中台
人工智能·程序人生·面试·职场和发展·跳槽·生活·业界资讯
文心快码BaiduComate9 小时前
2026 OPC x AI Coding 趋势案例交流会圆满落幕:一个人就一支研发团队
算法
ACM-moran10 小时前
条件显化(二分单峰函数+构造数列)
算法·推公式·整数三分