算法
文章平均质量分 94
数学的诞生是为了解释这个世界,而算法的诞生是为了改善这个世界
umbrellasoft
这个作者很懒,什么都没留下…
展开
-
LeetCode 50. 求幂(x, n) Pow(x, n)
实现 pow(x, n) ,即计算 x 的 n 次幂函数。示例 1:输入: 2.00000, 10输出: 1024.00000示例 2:输入: 2.10000, 3输出: 9.26100示例 3:输入: 2.00000, -2输出: 0.25000解释: 2-2 = 1/22 = 1/4 = 0.25说明:-100.0 < x &...原创 2018-09-02 10:16:58 · 19447 阅读 · 0 评论 -
LeetCode 49. 字母异位词分组 Group Anagrams
给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例:输入:["eat", "tea", "tan", "ate", "nat", "bat"],输出:[ ["ate","eat","tea"], ["nat","tan&quo原创 2018-09-02 10:14:42 · 19662 阅读 · 0 评论 -
LeetCode 48. 旋转图像 Rotate Image
给定一个 n × n 的二维矩阵表示一个图像。将图像顺时针旋转 90 度。说明:你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。示例 1:给定 matrix = [ [1,2,3], [4,5,6], [7,8,9]],原地旋转输入矩阵,使其变为:[ [7,4,1], [8,5,2], [9,6,...原创 2018-09-02 10:13:21 · 19537 阅读 · 0 评论 -
LeetCode 47. 全排列 II Permutations II
给定一个可包含重复数字的序列,返回所有不重复的全排列。示例:输入: [1,1,2]输出:[ [1,1,2], [1,2,1], [2,1,1]]public class Solution { public List<List<Integer>> permuteUnique(int[] nums) { List<...原创 2018-09-02 10:12:16 · 19620 阅读 · 0 评论 -
LeetCode 46. 全排列 Permutations
给定一个没有重复数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]您是否在真实的面试环节中遇到过这道题目呢? public class Solution { public List<List<I...原创 2018-09-02 10:11:11 · 19477 阅读 · 0 评论 -
LeetCode 45. 跳跃游戏 II Jump Game II
给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。示例:输入: [2,3,1,1,4]输出: 2解释: 跳到最后一个位置的最小跳跃数是2.从下标为 0 跳到下标为 1 的位置,跳 1步,然后跳 3 步到达数组的最后一个位置。说明:假设你总是可以到达数组的最后一个...原创 2018-09-02 10:10:01 · 19543 阅读 · 0 评论 -
LeetCode 44. 通配符匹配 Wildcard Matching
给定一个字符串 (s) 和一个字符模式 (p) ,实现一个支持 '?' 和 '*' 的通配符匹配。'?' 可以匹配任何单个字符。'*' 可以匹配任意字符串(包括空字符串)。两个字符串完全匹配才算匹配成功。说明:s 可能为空,且只包含从 a-z 的小写字母。 p 可能为空,且只包含从 a-z 的小写字母,以及字符 ? 和 *。示例 1:输入:s = "aa"p ...原创 2018-09-02 10:08:34 · 19528 阅读 · 0 评论 -
LeetCode 43. 字符串相乘 Multiply Strings
给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。示例 1:输入: num1 = "2", num2 = "3"输出: "6"示例 2:输入: num1 = "123", num2 = "456"输出: "56088"说明:num1 和 num2 的长度小于110。 nu原创 2018-09-02 10:07:20 · 19470 阅读 · 0 评论 -
LeetCode 42. 接雨水 Trapping Rain Water
给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 感谢 Marcos 贡献此图。示例:输入: [0,1,0,2,1,0,1,3,2,1,2,1]输出: 6public class ...原创 2018-09-02 10:06:30 · 19543 阅读 · 0 评论 -
LeetCode 41. 缺失的第一个正数 First Missing Positive
给定一个未排序的整数数组,找出其中没有出现的最小的正整数。示例 1:输入: [1,2,0]输出: 3示例 2:输入: [3,4,-1,1]输出: 2示例 3:输入: [7,8,9,11,12]输出: 1说明:你的算法的时间复杂度应为O(n),并且只能使用常数级别的空间。public class Solution { p...原创 2018-09-02 10:05:38 · 19415 阅读 · 0 评论 -
LeetCode 40. 组合总和 II Combination Sum II
给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。说明:所有数字(包括目标数)都是正整数。 解集不能包含重复的组合。 示例 1:输入: candidates = [10,1,2,7,6,1,5],target = 8,所求解集...原创 2018-09-01 22:50:33 · 19481 阅读 · 1 评论 -
LeetCode 39. 组合总和 Combination Sum
给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。 解集不能包含重复的组合。 示例 1:输入: candidates = [2,3,6,7],target =7,所求解集为:...原创 2018-09-01 22:48:36 · 19571 阅读 · 1 评论 -
LeetCode 38. 报数 Count and Say
报数序列是指一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:1. 12. 113. 214. 12115. 1112211 被读作 "one 1" ("一个一") , 即 11。11 被读作 "two 1s" ("两个一"), 即 21。21 被读作 "one 2", "one 1" ("原创 2018-09-01 22:46:01 · 19475 阅读 · 0 评论 -
LeetCode 37. 解数独 Sudoku Solver
编写一个程序,通过已填充的空格来解决数独问题。一个数独的解法需遵循如下规则:数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。空白格用 '.' 表示。一个数独。答案被标成红色。Note:给定的数独序列只包含数字 1-9 和字符 '.' 。 你可以假设给定的数独只有唯一解...原创 2018-09-01 22:44:57 · 19519 阅读 · 0 评论 -
LeetCode 36. 有效的数独 Valid Sudoku
判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。上图是一个部分填充的有效的数独。数独部分空格内已填入了数字,空白格用 '.' 表示。示例 1:输入:[ ["5","3",".",".",...原创 2018-09-01 22:43:55 · 19483 阅读 · 0 评论 -
LeetCode 35. 搜索插入位置 Search Insert Position
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例 2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: [1,3...原创 2018-09-01 22:42:38 · 19545 阅读 · 0 评论 -
LeetCode 34. 在排序数组中查找元素的第一个和最后一个位置 Find First and Last Position of Element in Sorted Array
给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。你的算法时间复杂度必须是 O(log n) 级别。如果数组中不存在目标值,返回 [-1, -1]。示例 1:输入: nums = [5,7,7,8,8,10],target = 8输出: [3,4]示例 2:输入: nums = [5,7,7,8,8...原创 2018-09-01 22:41:27 · 19871 阅读 · 0 评论 -
LeetCode 33. 搜索旋转排序数组 Search in Rotated Sorted Array
假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是 O(log n) 级别。示例 1:输入: nums = [4,5,6,7,0,1,...原创 2018-09-01 22:39:55 · 19476 阅读 · 0 评论 -
LeetCode 32. 最长有效括号 Longest Valid Parentheses
给定一个只包含 '(' 和 ')' 的字符串,找出最长的包含有效括号的子串的长度。示例 1:输入: "(()"输出: 2解释: 最长有效括号子串为"()"示例 2:输入: ")()())"输出: 4解释: 最长有效括号子串为 "()()" public class Solution { public int longestValidPare...原创 2018-09-01 22:26:07 · 19547 阅读 · 0 评论 -
LeetCode 31. 下一个排列 Next Permutation
实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须原地修改,只允许使用额外常数空间。以下是一些例子,输入位于左侧列,其相应输出位于右侧列。1,2,3 → 1,3,23,2,1 → 1,2,31,1,5 → 1,5,1概要我们需要找到给定数字列表的下一个字典排列,而...原创 2018-09-01 22:23:38 · 19628 阅读 · 0 评论 -
LeetCode 30. 与所有单词相关联的字串 Substring with Concatenation of All Words
给定一个字符串 s 和一些长度相同的单词 words。在 s 中找出可以恰好串联 words 中所有单词的子串的起始位置。注意子串要与 words 中的单词完全匹配,中间不能有其他字符,但不需要考虑 words 中单词串联的顺序。示例 1:输入: s = "barfoothefoobarman", words = ["foo","bar"]输出:[0,9]...原创 2018-08-31 12:08:33 · 19656 阅读 · 0 评论 -
LeetCode 29. 两数相除 Divide Two Integers
给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。返回被除数 dividend 除以除数 divisor 得到的商。示例 1:输入: dividend = 10, divisor = 3输出: 3示例 2:输入: dividend = 7, divisor = -3输出: -2 pub...原创 2018-08-31 12:07:23 · 19605 阅读 · 0 评论 -
LeetCode 28. 实现strStr() Implement strStr()
实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。示例 1:输入: haystack = "hello", needle = "ll"输出: 2示例 2:输入: haystack = "aaaaa", ne...原创 2018-08-31 12:04:58 · 19507 阅读 · 0 评论 -
LeetCode 27. 移除元素 Remove Element
给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的...原创 2018-08-31 12:02:39 · 19555 阅读 · 0 评论 -
LeetCode 26. 删除排序数组中的重复项 Remove Duplicates from Sorted Array
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为1,2 你不需要考虑数组中超出新长度后面的元素。示例 2:...原创 2018-08-31 11:59:36 · 19671 阅读 · 0 评论 -
LeetCode 25. k个一组翻转链表 Reverse Nodes in k-Group
给出一个链表,每 k 个节点一组进行翻转,并返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么将最后剩余节点保持原有顺序。示例 :给定这个链表:1->2->3->4->5当 k = 2 时,应当返回: 2->1->4->3->5当 k = 3 时,应当返回: 3->2->...原创 2018-08-31 11:54:49 · 19913 阅读 · 0 评论 -
LeetCode 24. 两两交换链表中的节点 Swap Nodes in Pairs
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。示例:给定1->2->3->4, 你应该返回 2->1->4->3说明:你的算法只能使用常数的额外空间。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。/** * Definition for singly-linked list. * public ...原创 2018-08-31 11:54:05 · 19535 阅读 · 0 评论 -
LeetCode 23. 合并K个排序链表 Merge k Sorted Lists
合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入:[ 1->4->5, 1->3->4, 2->6]输出: 1->1->2->3->4->4->5->6 /** * Definition for singly-linked list. * publi...原创 2018-08-31 11:13:16 · 19669 阅读 · 0 评论 -
LeetCode 22. 括号生成 Generate Parentheses
给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出 n = 3,生成结果为:[ "((()))", "(()())", "(())()", "()(())", "()()()"] 方法一:暴力法思路我们可以生成所有 22n2^{2n}22n 个 '(' 和 ')' 字符构成的序列。然后,...原创 2018-08-31 10:57:49 · 19814 阅读 · 0 评论 -
LeetCode 21. 合并两个有序链表 Merge Two Sorted Lists
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4/** * Definition for singly-linked list. * public class ListNode { * ...原创 2018-08-31 09:44:18 · 19559 阅读 · 0 评论 -
LeetCode 20. 有效的括号 Valid Parentheses
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例 2:输入: "()[]{}"输出: true示例 3:输入: "(]"输出: f...原创 2018-08-30 14:59:16 · 19749 阅读 · 0 评论 -
LeetCode 19. 删除链表的倒数第N个节点 Remove Nth Node From End of List
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗?摘要本文适用于初学者。它介绍了以下内容: 链表的遍历和...原创 2018-08-30 14:56:00 · 19794 阅读 · 0 评论 -
LeetCode 18. 四数之和 4Sum
给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。注意:答案中不可以包含重复的四元组。示例:给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0。满足要求的四元组集...原创 2018-08-30 14:44:34 · 19890 阅读 · 2 评论 -
LeetCode 17. 电话号码的字母组合 Letter Combinations of a Phone Number
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:"23"输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].说明:尽原创 2018-08-30 14:42:54 · 19807 阅读 · 0 评论 -
LeetCode 16. 最接近的三数之和 3Sum Closest
给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。例如,给定数组 nums = [-1,2,1,-4], 和 target = 1.与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2). public class...原创 2018-08-30 14:37:29 · 19874 阅读 · 0 评论 -
LeetCode 15. 三数之和 3Sum
给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2]] pub...原创 2018-08-30 14:35:32 · 19941 阅读 · 0 评论 -
LeetCode 14. 最长公共前缀 Longest Common Prefix
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。示例 1:输入: ["flower","flow","flight"]输出: "fl"示例 2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。说明:原创 2018-08-30 14:32:04 · 19874 阅读 · 0 评论 -
LeetCode 13. 罗马数字转整数 Roman to Integer
罗马数字包含以下七种字符:I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 ...原创 2018-08-30 14:30:22 · 19961 阅读 · 0 评论 -
LeetCode 12. 整数转罗马数字 Integer to Roman
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的...原创 2018-08-30 14:22:13 · 19859 阅读 · 0 评论 -
LeetCode 11. 盛最多水的容器 Container With Most Water
给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(...原创 2018-08-30 09:43:15 · 19833 阅读 · 0 评论