LeetCode: Combinations
Given two integers n and k, return all possible combinations of k numbers out of 1 ... n.
For example,
If n = 4 and k = 2, a solution is:
[ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ]
地址:https://oj.leetcode.com/problems/combinations/
算法:递归搞定。$\binom{n}{k}=\binom{n-1}{k}+\binom{n-1}{k}$。代码:
1 class Solution {
2 public:
3 vector<vector<int> > combine(int n, int k) {
4 if(n < 1 || k < 1) return vector<vector<int> > ();
5 return combineCore(n, k);
6 }
7 vector<vector<int> > combineCore(int n,int k){
8 vector<vector<int> > result;
9 if(k <= 0){
10 result.push_back(vector<int>());
11 return result;
12 }
13 if(n <= k){
14 vector<int> temp;
15 for(int i = 1; i <= n; ++i)
16 temp.push_back(i);
17 result.push_back(temp);
18 return result;
19 }
20 result = combineCore(n-1, k-1);
21 for(int j = 0; j < result.size(); ++j){
22 result[j].push_back(n);
23 }
24 vector<vector<int> > temp = combineCore(n-1,k);
25 result.insert(result.end(),temp.begin(),temp.end());
26 return result;
27 }
28 };
· 聊一聊 Linux 上对函数进行 hook 的两种方式
· C# 锁机制全景与高效实践:从 Monitor 到 .NET 9 全新 Lock
· 一则复杂 SQL 改写后有感
· golang中写个字符串遍历谁不会?且看我如何提升 50 倍
· C# 代码如何影响 CPU 缓存速度?
· 提升Avalonia UI质感,跨平台图标库选型实践
· 突发,CSDN 崩了!程序员们开始慌了?
· C# 中委托和事件的深度剖析与应用场景
· 一个基于 .NET 8 + Ant Design Blazor 开发的简洁现代后台管理框架
· AppBox拖拽设计增删改查用户界面