
Leetcode (1~100)
文章平均质量分 66
zhangzhetaojj
努力学习,争取BAT!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Leetcode 28. Implement strStr() 实现strStr()
题目:实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。示例 1:输入: haystack = "hello", needle = "ll"输出: 2示例 2:输入: haystack = "aaaaa", needle = "bba"...原创 2018-06-30 21:43:18 · 161 阅读 · 0 评论 -
LeetCode 27. Remove Element 移除元素
题目:给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前两个元素均为...原创 2018-06-20 05:05:30 · 143 阅读 · 0 评论 -
LeetCode 100. Same Tree 相同的树
题目:原创 2018-06-15 18:59:26 · 276 阅读 · 0 评论 -
LeetCode 94. Binary Tree Inorder Traversal 二叉树的中序遍历
题目原创 2018-06-15 01:09:03 · 210 阅读 · 0 评论 -
LeetCode 2. Add Two Numbers 两数相加
题目:给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807这道题目本质上是一个大数相加问题,主要的处理思...原创 2018-04-22 22:38:54 · 186 阅读 · 0 评论 -
LeetCode 3. Longest Substring Without Repeating Characters 无重复字符的最长子串 Java实现
先上题:给定一个字符串,找出不含有重复字符的最长子串的长度。示例:给定 "abcabcbb" ,没有重复字符的最长子串是 "abc" ,那么长度就是3。给定 "bbbbb" ,最长的子串就是 "b" ,长度是1。给定 "pwwkew" ,最长子串是 "wke" ,长度是3。请注意答案必须是一个子串,"pwke" 是 子序列 而不是子串。问题的目标在于找寻最大的连续子字原创 2018-04-22 23:19:27 · 228 阅读 · 0 评论 -
Leetcode 58. Length of Last Word 最后一个单词的长度
题目:给定一个仅包含大小写字母和空格 ' ' 的字符串,返回其最后一个单词的长度。如果不存在最后一个单词,请返回 0 。说明:一个单词是指由字母组成,但不包含任何空格的字符串。示例:输入: "Hello World"输出: 5解题思路:从字符串最后开始寻找最后一个单词,如果找到,计算长度直接返回,没有找到就返回0。时间复杂度O(n),空间复杂度O(1)。代码实现:class Solution {...原创 2018-06-26 19:32:10 · 149 阅读 · 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,5,6], 0输出: 0解题思路:排序数组,使用...原创 2018-06-27 19:48:55 · 159 阅读 · 0 评论 -
Leetcode 53. Maximum Subarray 最大子序和
题目:给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。解题思路:对元素进行累计求和,如何和为负则从当前位置开始新的求和,如何和为正...原创 2018-06-27 20:47:55 · 195 阅读 · 0 评论 -
Leetcode 83. Remove Duplicates from Sorted List 删除排序链表中的重复元素
题目:给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例 1:输入: 1->1->2输出: 1->2示例 2:输入: 1->1->2->3->3输出: 1->2->3解题思路:遍历整个链表,保存一个前序节点,方便寻找重复项。时间复杂度为O(n)。代码实现:/** * Definition for singly-linke...原创 2018-06-27 20:57:46 · 137 阅读 · 0 评论 -
Leetcode 69. Sqrt(x) x 的平方根
题目:实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。解题思路:寻找平方的下界,比如4 < 8 < 9。或者把它当作一...原创 2018-06-27 21:25:43 · 201 阅读 · 0 评论 -
Leetcode 70. Climbing Stairs 爬楼梯
题目:假设你正在爬楼梯。需要 n 步你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 步 + 1 步2. 2 步示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 步 + 1 步 + 1 步2. 1 步 + 2 步3...原创 2018-06-27 21:40:39 · 147 阅读 · 0 评论 -
Leetcode 64. Minimum Path Sum 最小路径和
题目:给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[ [1,3,1], [1,5,1], [4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。解题思路:DP问题,每次更新一行的最小路径值。空间复杂度O(n),时间复杂度O(n^2)。代码实现:cla...原创 2018-06-27 22:01:24 · 292 阅读 · 0 评论 -
Leetcode 74. Search a 2D Matrix 搜索二维矩阵
题目:编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:每行中的整数从左到右按升序排列。每行的第一个整数大于前一行的最后一个整数。示例 1:输入:matrix = [ [1, 3, 5, 7], [10, 11, 16, 20], [23, 30, 34, 50]]target = 3输出: true示例 2:输入:matrix ...原创 2018-06-28 14:08:07 · 271 阅读 · 0 评论 -
Leetcode 20. Valid Parentheses 有效的括号
题目:给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例 2:输入: "()[]{}"输出: true示例 3:输入: "(]"输出: false示例 4:输入: "([)]"输出:...原创 2018-07-05 23:29:21 · 150 阅读 · 0 评论 -
LeetCode 66. Plus One 加一
题目:给定一个非负整数组成的非空数组,在该数的基础上加一,返回一个新的数组。最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例 2:输入: [4,3,2,1]输出: [4,3,2,2]解释: 输入数组表示数字 4321。解题思路:从最后...原创 2018-06-22 05:42:33 · 176 阅读 · 0 评论 -
Leetcode 38. Count and Say 报数
题目:报数序列是指一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:1. 12. 113. 214. 12115. 1112211 被读作 "one 1" ("一个一") , 即 11。11 被读作 "two 1s" ("两个一"), 即 21。21 被读作 "one 2", "one 1" ("一个二原创 2018-06-24 06:09:19 · 146 阅读 · 0 评论 -
Leetcode 50. Pow(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 < 100.0n 是 32 位有符号整数...原创 2018-06-30 23:27:42 · 288 阅读 · 0 评论 -
Leetcode 73. Set Matrix Zeroes 矩阵置零
题目:给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请使用原地算法。示例 1:输入: [ [1,1,1], [1,0,1], [1,1,1]]输出: [ [1,0,1], [0,0,0], [1,0,1]]示例 2:输入: [ [0,1,2,0], [3,4,5,2], [1,3,1,5]]输出: [...原创 2018-06-30 23:27:31 · 137 阅读 · 0 评论 -
Leetcode 88. Merge Sorted Array 合并两个有序数组
题目:给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m = 3nums2 = [2,5,...原创 2018-06-30 22:50:48 · 158 阅读 · 0 评论 -
Leetcode 51. N-Queens N皇后
题目:n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。上图为 8 皇后问题的一种解法。给定一个整数 n,返回所有不同的 n 皇后问题的解决方案。每一种解法包含一个明确的 n 皇后问题的棋子放置方案,该方案中 'Q' 和 '.' 分别代表了皇后和空位。示例:输入: 4输出: [ [".Q..", // 解法 1 "...Q", "Q......原创 2018-07-01 23:01:03 · 186 阅读 · 0 评论 -
Leetcode 52. N-Queens II N皇后 II
题目:n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。上图为 8 皇后问题的一种解法。给定一个整数 n,返回 n 皇后不同的解决方案的数量。解题思路:和Leetcode 51. N-Queens N皇后一样,都是用回溯法解决,相较于上一题的输出棋盘,这题输出合法棋盘总和相对更简单一点。空间复杂度O(n)。代码实现:class Solution { ...原创 2018-07-01 23:07:28 · 741 阅读 · 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]]解题思路:回溯法,注意同一个元素不能重复选取。代码实现:class Solution { public List<List<Integer>&...原创 2018-07-01 23:10:57 · 227 阅读 · 0 评论 -
Leetcode 21. Merge Two Sorted Lists 合并两个有序链表
题目:将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4解题思路:创建一个新节点作为答案节点头,比较当前的l1和l2节点的大小,把小的节点作为next存入答案节点,更新答案节点。时间复杂度O(n),空间复杂度O(1)。...原创 2018-07-01 23:37:09 · 149 阅读 · 0 评论 -
Leetcode 47. Permutations II 全排列 II
题目:给定一个可包含重复数字的序列,返回所有不重复的全排列。示例:输入: [1,1,2]输出:[ [1,1,2], [1,2,1], [2,1,1]]解题思路:使用bfs进行全排列,创建used数组检查数字的使用情况。代码实现:public class Solution { public List<List<Integer>> permuteUni...原创 2018-07-02 15:35:17 · 299 阅读 · 0 评论 -
Leetcode 39. Combination Sum 组合总和
题目:给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。 示例 1:输入: candidates = [2,3,6,7], target = 7,所求解集为:[ [7]...原创 2018-07-02 16:23:53 · 216 阅读 · 0 评论 -
Leetcode 40. Combination Sum II 组合总和 II
题目:给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。说明:所有数字(包括目标数)都是正整数。解集不能包含重复的组合。 示例 1:输入: candidates = [10,1,2,7,6,1,5], target = 8,所求解集为:[ [1...原创 2018-07-02 17:23:28 · 318 阅读 · 0 评论 -
Leetcode 78. Subsets 子集
题目:给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], []]解题思路:回溯法求组合问题。代码实现:class Solution { public List...原创 2018-07-02 20:06:20 · 239 阅读 · 0 评论 -
Leetcode 90. Subsets II 子集 II
题目:给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: [1,2,2]输出:[ [2], [1], [1,2,2], [2,2], [1,2], []]解题思路:回溯法求解组合问题,求解方式都差不多。代码实现:class Solution { public List<List<...原创 2018-07-02 20:15:10 · 264 阅读 · 0 评论 -
LeetCode 1. Two Sum 两数之和
最近准备面试题目,开个新坑慢慢填... ==题目:给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]这道题最简单的做法就是针对nums里面的每一个元素,与t...原创 2018-04-20 14:59:22 · 150 阅读 · 0 评论 -
Leetcode 9. Palindrome Number 回文数
题目:判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。进阶:你能不将整数...原创 2018-06-23 07:39:41 · 130 阅读 · 0 评论 -
Leetcode 26. Remove Duplicates from Sorted Array 删除排序数组中的重复项
题目:给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新长度后面的元素。示例 2:给定 num...原创 2018-07-06 13:15:49 · 239 阅读 · 0 评论