当前位置: 首页 > news >正文

LintCode第652题-递归版

描述

一个非负数可以被视为其因数的乘积。编写一个函数来返回整数 n 的因数所有可能组合。

组合中的元素(a1,a2,...,ak)必须是非降序。(即,a1≤a2≤...≤ak)。

结果集中不能包含重复的组合。

样例1

 
输入:8
输出: [[2,2,2],[2,4]]
解释: 8 = 2 x 2 x 2 = 2 x 4

样例2

 
输入:1 
输出: []

思路:

易错点:

1.容易忽略掉回溯语句,回溯后没清除path,会导致组合路径出错

pathList.remove(pathList.size()-1)  

 2. dfs(1,supplementNum,pathList,totalList);该方法里面是supplementNum而不是startFactor

如果是传入的是startFactor会有无线递归的风险

代码如下:

import java.util.*;

public class Solution {

    public List<List<Integer>> getFactors(int n) {

        List<List<Integer>> totalList=new ArrayList<>();

        List<Integer> pathList=new ArrayList<>();

        dfs(n,2,pathList,totalList);

        return totalList;

    }

    void dfs(int supplementNum ,int startFactor,List<Integer> pathList,List<List<Integer>> totalList)

    {

        if(supplementNum==1)

        {

            if(pathList.size()>1)

            {

                totalList.add(new ArrayList<>(pathList));

            }

            return;

        }

        for(int factor=startFactor;factor<=Math.sqrt(supplementNum);factor++)

        {

            if(supplementNum%factor==0)

            {

                pathList.add(factor);

                dfs(supplementNum/factor,factor,pathList,totalList);

                pathList.remove(pathList.size()-1);

            }

        }

        if(supplementNum>=startFactor)

        {

            pathList.add(supplementNum);

            dfs(1,supplementNum,pathList,totalList);

            pathList.remove(pathList.size()-1);

        }

    }

   

    }


 

 

http://www.xdnf.cn/news/247825.html

相关文章:

  • Linux基础指令【下】
  • Leetcode刷题报告2——双指针法
  • 基于DrissionPage的高效爬虫开发:以小说网站数据抓取为例
  • vue自定义表头内容excel表格导出
  • LangChain4j +DeepSeek大模型应用开发——7 项目实战 创建硅谷小鹿
  • SpringAI使用OpenAI API格式调用DeepSeek服务
  • 《AIStarter安装部署全攻略:AI绘画/数字人项目快速上手指南(含Windows环境配置要点)》
  • *(解引用运算符)与 ++(自增运算符)的优先级
  • 开始一个vue项目
  • 《排序算法总结》
  • 60常用控件_QSpinBox的使用
  • [FPGA Video IP] Frame Buffer Read and Write
  • 一文读懂EMC VNX存储的Fast Cache(第二部分:对比)
  • 【RocketMQ】- 源码系列目录
  • 实习入职的总结
  • 前端八股 CSS 1
  • Chromium 134 编译指南 - Android 篇:从Linux版切换到Android版(六)
  • 2025智能体的发展趋势
  • 深⼊理解指针(8)
  • 简单的Qwen3的本地部署、分析与常见报错
  • Cribl 数据脱敏 更多方法 MASK (三)
  • 第十六届 -- 蓝桥杯Web开发大学组省赛个人复盘
  • ESP-ADF esp_dispatcher组件之audio_service子模块资源管理函数详解
  • RAGFlow上传3M是excel表格到知识库,提示上传的文件总大小过大
  • 基于Redis实现-附近商铺查询
  • UE实用地编插件Physical Layout Tool
  • MySQL | DQL语句-连接查询
  • linux 使用nginx部署next.js项目,并使用pm2守护进程
  • 加载ko驱动模块:显示Arm版本问题解决!
  • 小白如何入门Python爬虫