LeetCode
文章平均质量分 73
_Zebra
即使可能性很小,也要一直努力,无限接近于0的可能性永远不会是0
展开
-
LeetCode416-分割等和子集(经典01背包问题—动态规划)
本题要我们判断是否能将一个集合刚好分成两个总和相等的子集,首先我们可以算出总和,然后看能否被2整除如果不能被2整除,那必然无法分成两个总和相等的子集,直接返回false。如果能被2整除,我们就尝试能否找到一个集合,总和为sum/2,找到就返回true,找不到就返回false那怎么找呢,这里就可以将这个问题转化成一个01背包问题,首先01背包问题的数组dp[i][j]表示的是表示在0-i个物品中,往容量为j的背包,放价值最大的物品。在本题中,集合中的数据就可以看成是一个个的物品,物品的重量和价值都是数原创 2022-10-18 23:11:54 · 1058 阅读 · 1 评论 -
C++~LeetCode216-组合总和 III(回溯)
接着我们要确定传入的参数,题目给出的n和k以外,我们还需要一个nowSum来表示当前结果集中的和是多少,startNum表示现在从第几个数开始往后访问,因为组合是无序的,这里startNum的目的就是为了防止重复的组合出现。我们把整个问题的求解看成一颗树,树上的每条路径都是问题的一个可能的解,接着我们就是用for循环遍历当前层的集合元素,也就是当前层的结点,首先从startNum这个数开始,加入结果集,然后递归的去子树中寻找合适的结果集,找完以后返回。该列表不能包含相同的组合两次,组合可以以任何顺序返回。原创 2022-10-12 17:03:02 · 142 阅读 · 0 评论 -
C++~LeetCode18. 四数之和-思路-逐行注释
3.然后计算四数之和,如果四数之和>target,则让right--(因为数组是有序的,所以让最后一个数缩小,四数之和也就会减小),如果原创 2022-10-01 22:32:04 · 127 阅读 · 0 评论 -
C++~LeetCode49. 字母异位词分组-思路-逐行注释
思路将字母出现的频次作为键,map,这里的string表示的是字母出现的频数,string hash= string(26,0),初始化字符串hash,26个字符,分别表示a-z出现的次数。 然后将每个字符串中字符的出现次数统计一下,以当前统计字母出现次数的字符串作为键,将当前字符串插入到hashMap中键所对应的vector里面。 最后将hashMap里面的内容存放到ans里面就可以了。在遍历的时候使用了原创 2022-09-23 21:48:44 · 122 阅读 · 0 评论