当前位置:网站首页>leetcode:254. 因子的组合
leetcode:254. 因子的组合
2022-08-04 14:31:00 【OceanStar的学习笔记】
题目来源
题目描述
class Solution {
public:
vector<vector<int>> getFactors(int n){
}
};
题目解析
题意
给定一个正整数n,写出所有的因子相乘的形式,而且规定了因子从小到大的顺序排列
思路
- 因为需要列出所有的情况,所以可以用回溯法来解决
- 由于题目中说明了1和n本身不能算其因子,那么可以从2开始遍历到n,如果当前的数i可以被n整除,说明i是n的一个因子,将其存入一位数组 out 中,然后递归调用 n/i,此时不从2开始遍历,而是从i遍历到 n/i
- 停止的条件是当n等于1时,如果此时 out 中有因子,将这个组合存入结果 res 中
class Solution {
public:
vector<vector<int>> getFactors(int n) {
vector<vector<int>> res;
helper(n, 2, {
}, res);
return res;
}
void helper(int n, int start, vector<int> out, vector<vector<int>>& res) {
if (n == 1) {
if (out.size() > 1) res.push_back(out);
return;
}
for (int i = start; i <= n; ++i) {
if (n % i != 0) continue;
out.push_back(i);
helper(n / i, i, out, res);
out.pop_back();
}
}
};
优化
class Solution {
public:
vector<vector<int>> getFactors(int n) {
vector<vector<int>> res;
helper(n, 2, {
}, res);
return res;
}
void helper(int n, int start, vector<int> out, vector<vector<int>> &res) {
for (int i = start; i <= sqrt(n); ++i) {
if (n % i != 0) continue;
vector<int> new_out = out;
new_out.push_back(i);
helper(n / i, i, new_out, res);
new_out.push_back(n / i);
res.push_back(new_out);
}
}
};
边栏推荐
- MySQL性能指标TPS\QPS\IOPS如何压测?
- xampp安装包含的组件有(php,perl,apche,mysql)
- Unity插件:使用PopulationSystem制作行走交流的路人
- zabbix自定义图形
- 电子行业MES管理系统有哪些特殊功能
- 量化细胞内的信息流:机器学习时代下的研究进展
- 阴影初始化【5】
- Kyushu Cloud attended the Navigator Online Forum to discuss the current status, challenges and future of 5G MEC edge computing
- Makefile 语法及使用笔记
- C# 复制列表
猜你喜欢
Crawler - basic use of selenium, no interface browser, other uses of selenium, cookies of selenium, crawler cases
化繁为简,聊一聊复制状态机系统架构抽象
【历史上的今天】8 月 4 日:第一位图灵奖女性得主;NVIDIA 收购 MediaQ;首届网络安全挑战大赛完成
化算力为战力:宁夏中卫的数字化转型启示录
Find My技术|防止你的宠物跑丢,苹果Find My技术可以帮到你
Theory 1: Deep Learning - Detailed Explanation of the LetNet Model
量化细胞内的信息流:机器学习时代下的研究进展
浙江大学团队使用基于知识图谱的新方法,从空间分辨转录组数据中推断细胞间通信状况
期货开户之前要谈好最低手续费和交返
[LeetCode] 38. Appearance sequence
随机推荐
Rust from entry to proficient 04-variables
物联网应用发展趋势
How to automatically renew the token after it expires?
Makefile 语法及使用笔记
自监督学习未来是掩码自编码器?KAIST最新《自监督学习掩码自编码器》研究进展
G.登山小分队(暴力&dfs)
FRED应用:毛细管电泳系统
MySQL性能指标TPS\QPS\IOPS如何压测?
Chinese valentine's day, of course, to learn SQL optimization better leave work early to find objects
Bluetooth Technology|In the first half of the year, 1.3 million charging piles were added nationwide, and Bluetooth charging piles will become the mainstream of the market
在腾讯,我的试用期总结!
一看就会的Chromedriver(谷歌浏览器驱动)安装教程
【剑指offer59】队列的最大值
F. Jinyu and its outer matrix (construction)
ICML 2022 | 图神经网络的局部增强
oracle+RAC+linux5.1所需要安装的包
Win11快速助手在哪里?Win11打开快速助手的方法
Makefile syntax and usage notes
How to write SQL statements: the usage of Update, Case, and Select together
xpath获取带命名空间节点注意事项