Keshawn_lu's Blog

Keshawn_lu's Blog

Become a better myself.

Leetcode 40. 组合总和 II
题目简介:给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。 说明: 所有数字(包括目标数)都是正整数。 解集不能包含重复的组合。 示例 1: 12345678输入: candidates = [10,1,2,7,6,1,5], target = 8,所求解集为:[ [1, 7], [1, 2, 5], [2, 6], [1, 1, 6]] 示例 2: 123456输入: candidates = [2,5,2,1,2], ta...
Leetcode 39. 组合总和
题目简介:给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的数字可以无限制重复被选取。 说明: 所有数字(包括 target)都是正整数。 解集不能包含重复的组合。 示例 1: 123456输入:candidates = [2,3,6,7], target = 7,所求解集为:[ [7], [2,2,3]] 示例 2: 1234567输入:candidates = [2,3,5], target = 8,所求解集为:[ [2,2,2,2], [2,...
Leetcode 77. 组合
题目简介:给定两个整数 n 和 k,返回 1 … n 中所有可能的 k 个数的组合。 示例: 12345678910输入: n = 4, k = 2输出:[ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4],] 思路:又是一道回溯题,需要注意的是由于不能重复,所以每次遍历时需要从上一个数字的后面开始遍历。 所以增加一个参数pos用来定义遍历到的位置情况。 代码如下:123456789101112131415161718192021222324252627282930class Solution {public: vector&l...
Leetcode 347. 前 K 个高频元素
题目简介:给定一个非空的整数数组,返回其中出现频率前 k 高的元素。 示例 1: 12输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2] 示例 2: 12输入: nums = [1], k = 1输出: [1] 提示: 你可以假设给定的 k 总是合理的,且 1 ≤ k ≤ 数组中不相同的元素的个数。 你的算法的时间复杂度必须优于 O(n log n) , n 是数组的大小。 题目数据保证答案唯一,换句话说,数组中前 k 个高频元素的集合是唯一的。 你可以按任意顺序返回答案。 思路:第一次做题用到了堆的数据结构,首先是利用哈希表将数字出现的次数存储起来。 ...
Leetcode 107. 二叉树的层次遍历 II
题目简介:给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历) 例如:给定二叉树 [3,9,20,null,null,15,7], 12345 3 / \9 20 / \ 15 7 返回其自底向上的层次遍历为: 12345[ [15,7], [9,20], [3]] 思路:广搜,最后将数组倒置即可。 需要注意的是每次出队前需提前将当前的队列大小记录下来(也就是这层有多少元素)。 tip: 有空时用dfs方法实现一遍。 代码如下:123456789101112131415161718192021222324252...
Leetcode 60. 第k个排列
题目简介:给出集合 [1,2,3,…,n],其所有元素共有 n! 种排列。 按大小顺序列出所有排列情况,并一一标记,当 n = 3 时, 所有排列如下: "123" "132" "213" "231" "312" "321" 给定 n 和 k,返回第 k 个排列。 说明: 给定 n 的范围是 [1, 9]。 给定 k 的范围是[1, n!]。 示例 1: 12输入: n = 3, k = 3输出: "213" 示例 2: 12输入: n =...
Leetcode 257. 二叉树的所有路径
题目简介:给定一个二叉树,返回所有从根节点到叶子节点的路径。 说明: 叶子节点是指没有子节点的节点。 示例: 1234567891011输入: 1 / \2 3 \ 5 输出: ["1->2->5", "1->3"]解释: 所有根节点到叶子节点的路径为: 1->2->5, 1->3 思路:深搜,遇到叶子结点时将路径加入答案数组。 需要注意的是dfs()函数中string不能用引用类型,只能用拷贝类型(不然会影响不同路径的结果)。 代码如下:123456789101112131415161718...
Leetcode 51. N 皇后
题目简介:n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。 上图为 8 皇后问题的一种解法。 给定一个整数 n,返回所有不同的 n 皇后问题的解决方案。 每一种解法包含一个明确的 n 皇后问题的棋子放置方案,该方案中 'Q' 和 '.' 分别代表了皇后和空位。 示例: 12345678910111213输入:4输出:[ [".Q..", // 解法 1 "...Q", "Q...", "..Q."], ["...
Leetcode 剑指 Offer 20. 表示数值的字符串
题目简介:请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串”+100”、”5e2”、”-123”、”3.1416”、”-1E-16”、”0123”都表示数值,但”12e”、”1a3.14”、”1.2.3”、”+-5”及”12e+5.4”都不是。 思路:考虑的情况是真的多,有点头疼。 只能出现一个e,并且e前面和后面都得有数字,并且e之后可以重置+, -, .,即在满足其他要求的情况下,这些符号又可以出现。 .前面不能有., e。 操作符前面不能有操作符,不能有数字,不能有点(除非被重置)。 遇到其他符号直接返回false。 除了最前面和最后面可以有连续的空格外,...
Leetcode 486. 预测赢家
题目简介:给定一个表示分数的非负整数数组。 玩家 1 从数组任意一端拿取一个分数,随后玩家 2 继续从剩余数组任意一端拿取分数,然后玩家 1 拿,…… 。每次一个玩家只能拿取一个分数,分数被拿取之后不再可取。直到没有剩余分数可取时游戏结束。最终获得分数总和最多的玩家获胜。 给定一个表示分数的数组,预测玩家1是否会成为赢家。你可以假设每个玩家的玩法都会使他的分数最大化。 示例 1: 123456输入:[1, 5, 2]输出:False解释:一开始,玩家1可以从1和2中进行选择。如果他选择 2(或者 1 ),那么玩家 2 可以从 1(或者 2 )和 5 中进行选择。如果玩家 2 选择了 5 ...
avatar
鸣蜩十九
Always
友链
CSDN BiliBili