个人记录-leetcode77.combinations

utut6y utut6y     2022-12-25     768

关键词:

问题:
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],
]
依照我们做排列的思路写代码便可:
1、按顺序从小到达排列n个数。代孕公司【网址:bztss.com】
2、从中取出k个数,其实就是先取出1个 (k种可能),然后从剩下的k⑴个中再取出1个(k⑴种可能),以此类推。

为了保证取出的组合不重复,我们保证下1个取出的数1定在当前数的后面便可。南京代孕【网址:bztss.com】
即第1个数取了1后,第2个数只能从2~n中取;第1个数取了2后,第2个数只能从3~n中取 (取了2再取1,会和取了1再取2重复)。

整体来说结果就是将第1位为1的所有排列取完后,才开始取所有第1位为2的排列,顺次类推。

代码示例:

public class Solution
public List<List<Integer>> combine(int n, int k)
List<List<Integer>> rst = new ArrayList<>();

if (n < 0 || k < 0 || n < k)
return rst;

//初始化数组
int[] nInts = new int[n];
for (int i = 0; i < n; ++i)
nInts[i] = i+1;

List<Integer> curr = new ArrayList<>();
for (int i = 0; i <= n-k; ++i)
//顺次安排好第1位,这个实际上是基于深度优先的迭代
combineInner(rst, nInts, i, curr, k);

return rst;

private void combineInner(List<List<Integer>> rst, int[] nInts, int next, List<Integer> curr, int sz)
//将当前数加入结果队列太原代孕【网址:bztss.com】
List<Integer> newList = new ArrayList<>(curr);
newList.add(nInts[next]);

//判断长度是不是满足了地图条件
if (newList.size() == sz)
rst.add(newList);
return;

//顺次加入当前位以后的数
for (int i = next+1; i <= nInts.length - (sz - newList.size()); ++i)
combineInner(rst, nInts, i, newList, sz);


力扣(leetcode)学生出勤记录i个人题解(代码片段)

给定一个字符串来代表一个学生的出勤记录,这个记录仅包含以下三个字符:‘A‘ :Absent,缺勤‘L‘ :Late,迟到‘P‘ :Present,到场如果一个学生的出勤记录中不超过一个‘A‘(缺勤)并且不超过两个连续的‘L‘(迟到),... 查看详情

leetcode八月每日一题题解(个人记录打卡)(代码片段)

文章目录八月每日一题1374.生成每种字符都是奇数个的字符串622.设计循环队列899.有序队列1403.非递增顺序的最小子序列623.在二叉树中增加一行1408.数组中的字符串匹配636.函数的独占时间(不会)761.特殊的二进制序列࿰... 查看详情

leetcode八月每日一题题解(个人记录打卡)(代码片段)

文章目录八月每日一题1374.生成每种字符都是奇数个的字符串622.设计循环队列899.有序队列1403.非递增顺序的最小子序列623.在二叉树中增加一行1408.数组中的字符串匹配636.函数的独占时间(不会)761.特殊的二进制序列࿰... 查看详情

leetcode八月每日一题题解(个人记录打卡)(代码片段)

...月每日一题1374.生成每种字符都是奇数个的字符串https://leetcode.cn/problems/generate-a-string-with-characters-that-have-odd-counts/思路 查看详情

力扣(leetcode)求众数个人题解(代码片段)

给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊n/2⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在众数。示例 1:输入:[3,2,3]输出:3示例 2:输入:[2,2,1,1,1... 查看详情

领扣(leetcode)回文链表个人题解(代码片段)

请判断一个链表是否为回文链表。示例1:输入:1->2输出:false示例2:输入:1->2->2->1输出:true进阶:你能否用 O(n)时间复杂度和O(1)空间复杂度解决此题? 一个最暴力的做法,遍历一次,内容保存在数组内,然后判断是否... 查看详情

力扣(leetcode)字符串中的第一个唯一字符个人题解(代码片段)

...字符,并返回它的索引。如果不存在,则返回-1。案例:s="leetcode"返回0.s="loveleetcode",返回2. 注意事项:您可以假定该字符串只包含小写字母。  这题的思想还是比较简单明了的,通过hashmap记录所有的键值对应关系,即... 查看详情

2023年4月刷题记录(代码片段)

2023年4月1日leetcode831.隐藏个人信息链接地址:https://leetcode.cn/problems/masking-personal-information/题意:给你一条个人信息字符串s,可能表示一个邮箱地址,也可能表示一串电话号码。返回按如下规则隐藏个人信息后的结果:电子邮件... 查看详情

leetcode解题记录

尽量抽空刷LeetCode,持续更新刷题记录在github上面,https://github.com/Zering/LeetCode 2016-09-05300.LongestIncreasingSubsequence问题:https://leetcode.com/problems/longest-increasing-subsequence/分析:http://zering.me/20 查看详情

[leetcode]maskingpersonalinformation给个人信息打码(代码片段)

 Wearegivena personalinformationstring S,whichmayrepresent either anemailaddress or aphonenumber.Wewouldliketomaskthis personalinformationaccordingtothe fo 查看详情

leetcode题目,个人见解1(代码片段)

给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位,数组中每个元素只存储单个数字。你可以假设除了整数0之外,这个整数不会以零开头。示例 1:输入:[1,2,3]输出:[1,2,4]... 查看详情

力扣(leetcode)颠倒二进制位个人题解(代码片段)

颠倒给定的32位无符号整数的二进制位。 示例1:输入:00000010100101000001111010011100输出:00111001011110000010100101000000解释:输入的二进制串00000010100101000001111010011100表示无符号整数43261596,因此返回964176192,其二进制表示形式为0011100101... 查看详情

力扣(leetcode)位1的个数个人题解(代码片段)

编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为‘1’ 的个数(也被称为汉明重量)。 示例1:输入:00000000000000000000000000001011输出:3解释:输入的二进制串00000000000000000000000000001011 中,共... 查看详情

算法刷题记录

...关解题记录dfs的几个基础示例acwin91~94    LEETCODE刷题记录与资料LEETCODE 1031.两个非重叠子数组的最大和dfs的几个基础示例leetcode刷题进展leetcode算法分类 查看详情

leetcode记录-组合两个表(代码片段)

表1: Person+-------------+---------+|列名|类型|+-------------+---------+|PersonId|int||FirstName|varchar||LastName|varchar|+-------------+---------+PersonId是上表主键表2: Address+-------------+-------- 查看详情

力扣(leetcode)整数反转个人题解(代码片段)

给出一个32位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入:123输出:321 示例2:输入:-123输出:-321示例3:输入:120输出:21注意:假设我们的环境只能存储得下32位的有符号整数,则其数值范围为 [?231,... 查看详情

力扣(leetcode)加一个人题解(代码片段)

给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位,数组中每个元素只存储一个数字。你可以假设除了整数0之外,这个整数不会以零开头。示例 1:输入:[1,2,3]输出:[1,2,4]... 查看详情

leetcode记录03(代码片段)

6.Z字形变换classSolution(object):defconvert(self,s,numRows):""":types:str:typenumRows:int:rtype:str"""iflen(s)==1ornumRows==1:returnss_len=len(s)tmp_list=[] 查看详情