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;

    }
};
相关推荐
2401_891482172 小时前
多平台UI框架C++开发
开发语言·c++·算法
88号技师2 小时前
2026年3月中科院一区SCI-贝塞尔曲线优化算法Bezier curve-based optimization-附Matlab免费代码
开发语言·算法·matlab·优化算法
t198751282 小时前
三维点云最小二乘拟合MATLAB程序
开发语言·算法·matlab
无敌昊哥战神2 小时前
【LeetCode 257】二叉树的所有路径(回溯法/深度优先遍历)- Python/C/C++详细题解
c语言·c++·python·leetcode·深度优先
x_xbx3 小时前
LeetCode:148. 排序链表
算法·leetcode·链表
Darkwanderor3 小时前
三分算法的简单应用
c++·算法·三分法·三分算法
2401_831920743 小时前
分布式系统安全通信
开发语言·c++·算法
WolfGang0073214 小时前
代码随想录算法训练营 Day17 | 二叉树 part07
算法
温九味闻醉4 小时前
关于腾讯广告算法大赛2025项目分析1 - dataset.py
人工智能·算法·机器学习
炽烈小老头4 小时前
【 每天学习一点算法 2026/03/23】数组中的第K个最大元素
学习·算法·排序算法