![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
leetcode
hucongWh
共同学习。
展开
-
Leetcode ---- 209. 长度最小的子数组
题目: 给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组。如果不存在符合条件的连续子数组,返回 0。 示例: 输入: s = 7, nums = [2,3,1,2,4,3] 输出: 2 解释: 子数组 [4,3] 是该条件下的长度最小的连续子数组。 进阶: 如果你已经完成了O(n) 时间复杂度的解法, 请尝试 O(n log ...原创 2018-10-17 22:21:58 · 736 阅读 · 0 评论 -
Leetcode ---- 15.三数之和
题目: 给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。 注意:答案中不可以包含重复的三元组。 例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4], 满足要求的三元组集合为: [ [-1, 0, 1], [-1, -1, 2] ] 思...原创 2018-11-07 20:35:21 · 122 阅读 · 1 评论 -
Leetcode ---- 22. 括号生成
题目: 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。 例如,给出 n = 3,生成结果为: [ "((()))", "(()())", "(())()", "()(())", "()()()" ] 思路: 题目要我们输出特定对数的所有括号组合。 将该问题分为两个小问题: 1. 正确的输出肯定从左括号开始。则先输入左...原创 2018-11-28 21:44:42 · 124 阅读 · 0 评论 -
Leetcode ---- 77. 组合
题目: 给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。 示例: 输入: n = 4, k = 2 输出: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ] 思路: 看到该题的第一个反应就是用 n 个 for 循环,得到所有包含 k 个数的解,再去重。 然而时间复杂度太高,我们需要采用相对...原创 2018-11-28 21:56:08 · 130 阅读 · 0 评论 -
Leetcode ---- 78. 子集
题目: 给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。 说明:解集不能包含重复的子集。 示例: 输入: nums = [1,2,3] 输出: [ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ] 思路: 对于这道题,有两个思路。 第一个就是用 dfs 。逐个推入栈直到边界...原创 2018-11-29 09:10:08 · 130 阅读 · 0 评论 -
Leetcode ---- 46. 全排列
题目: 给定一个没有重复数字的序列,返回其所有可能的全排列。 示例: 输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ] 思路: 该题采用回溯的方法。 将问题简化,即得到两个元素的全排列。那么就将两个元素交换位置,推入栈中,再回溯。由此,我们就可以写出递归公式。 程...原创 2018-11-29 09:51:42 · 137 阅读 · 0 评论 -
Leetcode ---- 组合总和
题目: 给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的数字可以无限制重复被选取。 说明: 所有数字(包括 target)都是正整数。 解集不能包含重复的组合。 示例 1: 输入: candidates = [2,3,6,7], target = 7, ...原创 2018-11-29 10:37:41 · 161 阅读 · 0 评论 -
Leetcode ---- 306. 累加数
题目: 累加数是一个字符串,组成它的数字可以形成累加序列。 一个有效的累加序列必须至少包含 3 个数。除了最开始的两个数以外,字符串中的其他数都等于它之前两个数相加的和。 给定一个只包含数字 '0'-'9' 的字符串,编写一个算法来判断给定输入是否是累加数。 说明: 累加序列里的数不会以 0 开头,所以不会出现 1, 2, 03 或者 1, 02, 3 的情况。 示例 1: 输入: ...原创 2018-11-29 11:01:34 · 332 阅读 · 0 评论 -
Leetcode ---- 477. 汉明距离总和
题目: 两个整数的 汉明距离 指的是这两个数字的二进制数对应位不同的数量。 计算一个数组中,任意两个数之间汉明距离的总和。 示例: 输入: 4, 14, 2 输出: 6 解释: 在二进制表示中,4表示为0100,14表示为1110,2表示为0010。(这样表示是为了体现后四位之间关系) 所以答案为: HammingDistance(4, 14) + HammingDistance(4...原创 2018-12-07 10:18:35 · 309 阅读 · 0 评论 -
Leetcode ---- 283.移动零
题目: 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 示例: 输入: [0,1,0,3,12] 输出: [1,3,12,0,0] 说明: 必须在原数组上操作,不能拷贝额外的数组。 尽量减少操作次数。 思路: 这道题思路很清晰, 遇零作擦除操作即可,后续再补零。 程序: class Solution { public...原创 2018-11-07 20:26:46 · 119 阅读 · 0 评论 -
Leetcode ---- 143.重排链表
题目: 给定一个单链表 L:L0→L1→…→Ln-1→Ln , 将其重新排列后变为: L0→Ln→L1→Ln-1→L2→Ln-2→… 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 示例 1: 给定链表 1->2->3->4, 重新排列为 1->4->2->3. 示例 2: 给定链表 1->2->3->4->...原创 2018-11-07 19:55:07 · 117 阅读 · 0 评论 -
Leetcode ---- 445.两数相加II
题目: 给定两个非空链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储单个数字。将这两数相加会返回一个新的链表。 你可以假设除了数字 0 之外,这两个数字都不会以零开头。 进阶: 如果输入链表不能修改该如何处理?换句话说,你不能对列表中的节点进行翻转。 示例: 输入: (7 -> 2 -> 4 -> 3) + (5 -> 6 -> ...原创 2018-11-07 19:47:06 · 127 阅读 · 0 评论 -
Leetcode ---- 12.整数转罗马数字
题目: 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做 II ,即为两个...原创 2018-10-13 20:44:00 · 122 阅读 · 0 评论 -
Leetcode ---- 13.罗马数字转整数
题目: 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做 II ,即为两个...原创 2018-10-13 21:23:59 · 137 阅读 · 0 评论 -
Leetcode ---- 344.反转字符串
题目: 编写一个函数,其作用是将输入的字符串反转过来。 示例 1: 输入: "hello" 输出: "olleh" 示例 2: 输入: "A man, a plan, a canal: Panama" 输出: "amanaP :lanac a ,nalp a ,nam A" 思路: 这道题比较简单。直接建立一个新的string对象,反向输入即可。 程序: cl...原创 2018-10-14 17:10:07 · 98 阅读 · 0 评论 -
Leetcode ---- 68.文本左右对齐
题目: 给定一个单词数组和一个长度 maxWidth,重新排版单词,使其成为每行恰好有 maxWidth 个字符,且左右两端对齐的文本。 你应该使用“贪心算法”来放置给定的单词;也就是说,尽可能多地往每行中放置单词。必要时可用空格 ' ' 填充,使得每行恰好有 maxWidth 个字符。 要求尽可能均匀分配单词间的空格数量。如果某一行单词间的空格不能均匀分配,则左侧放置的空格数要多于右侧的空...原创 2018-10-15 14:37:35 · 224 阅读 · 0 评论 -
Leetcode ---- 实现strStr()
题目: 实现 strStr() 函数。 给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。 示例 1: 输入: haystack = "hello", needle = "ll" 输出: 2 示例 2: 输入: haystack = "aaaaa", ...原创 2018-10-16 21:55:14 · 104 阅读 · 0 评论 -
Leetcode ---- 88.合并两个有序数组
题目: 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。 说明: 初始化 nums1 和 nums2 的元素数量分别为 m 和 n。 你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。 示例: 输入: nums1 = [1,2,3,0,0,0], m = 3 n...原创 2018-10-16 22:03:09 · 138 阅读 · 0 评论 -
Leetcode ---- 链表简单题
复习了一下链表。下面做了一些简单题。 237. 删除链表中的元素 题目: 请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。 现有一个链表 -- head = [4,5,1,9],它可以表示为: 4 -> 5 -> 1 -> 9 示例 1: 输入: head = [4,5,1,9], node = 5 输出...原创 2018-10-28 17:57:06 · 137 阅读 · 0 评论 -
Leetcode ---- 162. 寻找峰值
题目: 峰值元素是指其值大于左右相邻值的元素。 给定一个输入数组 nums,其中 nums[i] ≠ nums[i+1],找到峰值元素并返回其索引。 数组可能包含多个峰值,在这种情况下,返回任何一个峰值所在位置即可。 你可以假设 nums[-1] = nums[n] = -∞。 示例 1: 输入: nums = [1,2,3,1] 输出: 2 解释: 3 是峰值元素,你的函数应该返回...原创 2018-10-23 14:58:36 · 158 阅读 · 0 评论 -
Leetcode ---- 397. 整数替换
题目: 给定一个正整数 n,你可以做如下操作: 1. 如果 n 是偶数,则用 n / 2替换 n。 2. 如果 n 是奇数,则可以用 n + 1或n - 1替换 n。n 变为 1 所需的最小替换次数是多少? 示例 1: 输入: 8 输出: 3 解释: 8 -> 4 -> 2 -> 1 示例 2: 输入: 7 输出: 4 解释: 7 -> 8 -&g...原创 2018-12-07 10:39:35 · 362 阅读 · 0 评论