博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode254- Factor Combinations- medium
阅读量:5300 次
发布时间:2019-06-14

本文共 1409 字,大约阅读时间需要 4 分钟。

Numbers can be regarded as product of its factors. For example,

8 = 2 x 2 x 2;  = 2 x 4.

Write a function that takes an integer n and return all possible combinations of its factors.

Note: 

  1. You may assume that n is always positive.
  2. Factors should be greater than 1 and less than n.

 

Examples: 

input: 1
output: 

[]
input: 
37
output: 
[]
input: 
12
output:
[  [2, 6],  [2, 2, 3],  [3, 4]]
input: 
32
output:
[  [2, 16],  [2, 2, 8],  [2, 2, 2, 4],  [2, 2, 2, 2, 2],  [2, 4, 4],  [4, 8]]

  

算法:DFS。函数头:private void dfs(int target, int num, List<Integer> crt, List<List<Integer>> result) 

不断拆解为小一点的继续需要整除的数字。从num的数字开始,试着加入能被target整除的那些数字,来递归dfs(target / i, i, crt, result); 最后达到让target变成1的目标。

细节:用target % i == 0否来判断是否能够整除。

 
class Solution {    public List
> getFactors(int n) { List
> result = new ArrayList<>(); if (n <= 1) { return result; } dfs(n, 2, new ArrayList
(), result); return result; } private void dfs(int target, int num, List
crt, List
> result) { if (target == 1 && crt.size() > 1) { result.add(new ArrayList
(crt)); return; } for (int i = num; i <= target; i++) { if (target % i != 0) { continue; } crt.add(i); dfs(target / i, i, crt, result); crt.remove(crt.size() - 1); } } }

 

 

转载于:https://www.cnblogs.com/jasminemzy/p/7849085.html

你可能感兴趣的文章
每日一库:Modernizr.js,es5-shim.js,es5-safe.js
查看>>
ajax连接服务器框架
查看>>
wpf样式绑定 行为绑定 事件关联 路由事件实例
查看>>
利用maven管理项目之POM文件配置
查看>>
FUSE-用户空间文件系统
查看>>
TCL:表格(xls)中写入数据
查看>>
Oracle事务
查看>>
String类中的equals方法总结(转载)
查看>>
属性动画
查看>>
标识符
查看>>
给大家分享一张CSS选择器优选级图谱 !
查看>>
Win7中不能调试windows service
查看>>
通过httplib2 探索的学习的最佳方式
查看>>
快来熟练使用 Mac 编程
查看>>
Node.js 入门:Express + Mongoose 基础使用
查看>>
plsql使用,为什么可以能看见其他用户的表
查看>>
一步步教你轻松学奇异值分解SVD降维算法
查看>>
使用pager进行分页
查看>>
UVA - 1592 Database
查看>>
Fine Uploader文件上传组件
查看>>