Hello everyone , I'm Qi Guanjie (qí guān jié ), stay 【 Qi Guanjie 】 official account 、CSDN、GitHub、B Share some technical blog posts on the website and other platforms , It mainly includes front-end development 、python The backend development 、 Applet development 、 Data structure and algorithm 、docker、Linux Common operation and maintenance 、NLP And other related technical blog , Time flies , Future period , come on. ~
If you love bloggers, you can focus on the bloggers' official account. 【 Qi Guanjie 】(qí guān jié), The articles inside are more complete and updated faster . If you need to find a blogger, you can leave a message at the official account. , I will reply to the message as soon as possible .
This article was originally written as 【 Qi Guanjie 】(qí guān jié ), Please support the original , Some platforms have been stealing blog articles maliciously !!! All articles please pay attention to WeChat official account 【 Qi Guanjie 】.
Given two integers n
and k
, Return range [1, n]
All the possibilities in k
Combination of numbers .
You can press In any order Return to the answer .
Example 1:
Input :n = 4, k = 2
Output :
[
[2,4],
[3,4],
[2,3],
[1,2],
[1,3],
[1,4],
]
Example 2:
Input :n = 1, k = 1
Output :[[1]]
Tips :
1 <= n <= 20
1 <= k <= n
Explosive search
class Solution:
def combine(self, n: int, k: int) -> List[List[int]]:
res = []
tmp = []
def dfs(num,idx):
nonlocal n,k
if idx == k:
res.append(copy.deepcopy(tmp))
return
if idx <= k-1 and num <= n:
for i in range(num,n+1):
tmp.append(i)
dfs(i+1,idx+1)
tmp.pop()
dfs(1,0)
return res