随笔分类 -  LeetCode

摘要:给定一个没有重复数字的序列,返回其所有可能的全排列。 示例: 无奈,用swap的方法从左向右滑动,直到最后结果和最初的一致停止,只适用于三位数。。。。(改进一下让每个数字作为第一位后面的进行滑动,应该可以pass,放弃) 错: 正确做法bt: 添加顺序就是[1,2,3],[1,3,2],[2,1,3 阅读全文
posted @ 2019-05-04 10:49 Assange 阅读(392) 评论(0) 推荐(0)
摘要:给定一个非负整数数组,你最初位于数组的第一个位置。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 你的目标是使用最少的跳跃次数到达数组的最后一个位置。 示例: 说明: 假设你总是可以到达数组的最后一个位置。 贪心:curMax当前能走的最大长度,maxNext最终能走的最大长度 TIME:O( 阅读全文
posted @ 2019-05-03 20:27 Assange 阅读(415) 评论(0) 推荐(0)
摘要:给定一个字符串 (s) 和一个字符模式 (p) ,实现一个支持 '?' 和 '*' 的通配符匹配。 两个字符串完全匹配才算匹配成功。 说明: s 可能为空,且只包含从 a-z 的小写字母。 p 可能为空,且只包含从 a-z 的小写字母,以及字符 ? 和 *。 示例 1: 示例 2: 示例 3: 示例 阅读全文
posted @ 2019-05-03 09:42 Assange 阅读(620) 评论(0) 推荐(0)
摘要:给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。 示例 1: 示例 2: 说明: 正确方法:结合算式相乘的思想 0 4 index 0 1 2 3 4 < [p1 p2] TIME:O(n*m) SPACE:O(n+m) 阅读全文
posted @ 2019-05-02 17:26 Assange 阅读(256) 评论(0) 推荐(0)
摘要:给定一个未排序的整数数组,找出其中没有出现的最小的正整数。 示例 1: 示例 2: 示例 3: 说明: 你的算法的时间复杂度应为O(n),并且只能使用常数级别的空间。 思路: case1:length == 0 return 1 case2:length == 1 case2.1 [-1] [-.. 阅读全文
posted @ 2019-05-01 21:12 Assange 阅读(336) 评论(0) 推荐(0)
摘要:给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用一次。 说明: 所有数字(包括目标数)都是正整数。 解集不能包含重复的组合。 示例 1: 示例 2: 20 阅读全文
posted @ 2019-05-01 20:33 Assange 阅读(194) 评论(0) 推荐(0)
摘要:给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的数字可以无限制重复被选取。 说明: 所有数字(包括 target)都是正整数。 解集不能包含重复的组合。 示例 1: 示例 阅读全文
posted @ 2019-04-30 17:26 Assange 阅读(234) 评论(0) 推荐(0)
摘要:报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下: 1 被读作 "one 1" ("一个一") , 即 11。11 被读作 "two 1s" ("两个一"), 即 21。21 被读作 "one 2", "one 1" ("一个二" , "一个一") , 即 1211。 阅读全文
posted @ 2019-04-29 20:44 Assange 阅读(215) 评论(0) 推荐(0)
摘要:判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。 上图是一个部分填充的有效的数独。 数独部分空格内已填入了数字,空白格用 '.' 表示。 示例 1: 示例 2: 说明: 一个有效的数独(部分已被填充)不一定是可解的。 只需要根据以上规则,验证已经填入的数字是否有 阅读全文
posted @ 2019-04-29 19:04 Assange 阅读(289) 评论(0) 推荐(0)
摘要:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 你可以假设数组中无重复元素。 示例 1: 输入: [1,3,5,6], 5 输出: 2 示例 2: 输入: [1,3,5,6], 2 输出: 1 示例 3: 输入: [1,3,5 阅读全文
posted @ 2019-04-27 20:18 Assange 阅读(196) 评论(0) 推荐(0)
摘要:给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。 你的算法时间复杂度必须是 O(log n) 级别。 如果数组中不存在目标值,返回 [-1, -1]。 示例 1: 输入: nums = [5,7,7,8,8,10], target = 阅读全文
posted @ 2019-04-27 19:52 Assange 阅读(444) 评论(0) 推荐(0)
摘要:给定一个只包含 '(' 和 ')' 的字符串,找出最长的包含有效括号的子串的长度。 示例 1: 示例 2: start纪录第一个有效括号的位置,当遇到右括号时,看和其匹配的左括号的位置在哪,得到该有效括号的长度。 2019-04-25 18:39:32 阅读全文
posted @ 2019-04-25 18:48 Assange 阅读(382) 评论(0) 推荐(0)
摘要:实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。 如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。 必须原地修改,只允许使用额外常数空间。 以下是一些例子,输入位于左侧列,其相应输出位于右侧列。1,2,3 → 1,3,23,2,1 → 1, 阅读全文
posted @ 2019-04-25 18:12 Assange 阅读(337) 评论(0) 推荐(0)
摘要:给定一个字符串 s 和一些长度相同的单词 words。找出 s 中恰好可以由 words 中所有单词串联形成的子串的起始位置。 注意子串要与 words 中的单词完全匹配,中间不能有其他字符,但不需要考虑 words 中单词串联的顺序。 示例 1: 示例 2: 2019-04-23 17:31:31 阅读全文
posted @ 2019-04-23 17:31 Assange 阅读(221) 评论(0) 推荐(0)
摘要:给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。 返回被除数 dividend 除以除数 divisor 得到的商。 示例 1: 示例 2: 说明: 被除数和除数均为 32 位有符号整数。 除数不为 0。 假设我们的环境只能存储 3 阅读全文
posted @ 2019-04-22 21:45 Assange 阅读(284) 评论(0) 推荐(0)
摘要:实现 strStr() 函数。 给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。 示例 1: 输入: haystack = "hello", needle = "ll" 阅读全文
posted @ 2019-04-22 21:18 Assange 阅读(142) 评论(0) 推荐(0)
摘要:给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。 示例 1: 示例 2: 说明: 为 阅读全文
posted @ 2019-04-22 20:51 Assange 阅读(189) 评论(0) 推荐(0)
摘要:给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 示例 1: 示例 2: 说明: 为什么返回数值是整数,但输出的答案是数组呢? 请注意,输入数组是以“引用”方 阅读全文
posted @ 2019-04-21 23:43 Assange 阅读(375) 评论(0) 推荐(0)
摘要:给出一个链表,每 k 个节点一组进行翻转,并返回翻转后的链表。 k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么将最后剩余节点保持原有顺序。 示例 : 给定这个链表:1->2->3->4->5 当 k = 2 时,应当返回: 2->1->4->3->5 当 k = 阅读全文
posted @ 2019-04-20 17:51 Assange 阅读(469) 评论(0) 推荐(0)
摘要:给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 示例: 给定 1->2->3->4, 你应该返回 2->1->4->3. l2 nextStart l1 l2 nextStart 1->2->3->4->5->6 2->1- 阅读全文
posted @ 2019-04-20 16:45 Assange 阅读(271) 评论(0) 推荐(0)