
从零单刷Leetcode(Java描述)
使用Java语言练习Leetcode的记录。
waS_TransvolnoS
写过两行bug,尘世间一个迷途小码农。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
从零单刷Leetcode(JAVA描述)——1.two-sum
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]这道题在我面试猫眼电影...原创 2019-06-04 15:47:03 · 129 阅读 · 0 评论 -
从零单刷Leetcode(JAVA描述)——2. 两数相加
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> ...原创 2019-06-07 11:31:39 · 122 阅读 · 0 评论 -
从零单刷Leetcode(JAVA描述)——3.无重复字符的最长子串
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所...原创 2019-06-05 10:29:56 · 181 阅读 · 0 评论 -
从零单刷Leetcode(JAVA描述)——5. 最长回文子串
给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: “babad”输出: “bab”注意: “aba” 也是一个有效答案。示例 2:输入: “cbbd”输出: “bb”//中心扩展算法,复杂度O(n^2)class Solution { //定义起始、末尾 int le,maxLen; public Stri...原创 2019-06-07 14:43:04 · 176 阅读 · 0 评论 -
从零单刷Leetcode(JAVA描述)——6. Z 字形变换
将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 “LEETCODEISHIRING” 行数为 3 时,排列如下:L C I RE T O E S I I GE D H N之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“LCIRETOESIIGEDHN”。请你实现这个将字符串进行...原创 2019-06-11 17:26:52 · 246 阅读 · 0 评论 -
从零单刷Leetcode(JAVA描述)——7. 整数反转
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。这是道Easy难度的题,感觉自...原创 2019-06-11 18:44:46 · 155 阅读 · 0 评论 -
从零单刷Leetcode(JAVA描述)——8.String to Integer (atoi)
请你来实现一个 atoi 函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。该字符串除了有效的整数部分之后也可能会存在多余的字符,这些字符可以被忽...原创 2019-06-04 15:39:54 · 101 阅读 · 0 评论 -
从零单刷Leetcode(JAVA描述)——9. 回文数
链接:https://leetcode-cn.com/problems/palindrome-number判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:...原创 2019-06-12 09:28:02 · 143 阅读 · 0 评论 -
从零单刷Leetcode(JAVA描述)——11. 盛最多水的容器
链接:https://leetcode-cn.com/problems/container-with-most-water给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n...原创 2019-06-12 10:40:44 · 226 阅读 · 0 评论 -
从零单刷Leetcode(JAVA描述)——12. 整数转罗马数字
链接:https://leetcode-cn.com/problems/integer-to-roman罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D ...原创 2019-06-14 15:43:19 · 155 阅读 · 0 评论 -
从零单刷Leetcode(JAVA描述)——13. 罗马数字转整数
链接:https://leetcode-cn.com/problems/roman-to-integer罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D ...原创 2019-06-14 16:40:34 · 130 阅读 · 0 评论 -
从零单刷Leetcode(JAVA描述)——14. 最长公共前缀
链接:https://leetcode-cn.com/problems/longest-common-prefix编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入: [“flower”,“flow”,“flight”]输出: “fl”示例 2:输入: [“dog”,“racecar”,“car”]输出: “”解释: 输入不存在公...原创 2019-06-14 20:58:19 · 140 阅读 · 0 评论 -
从零单刷Leetcode(JAVA描述)——15. 三数之和
给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[[-1, 0, 1],[-1, -1, 2]]class Solution { ...原创 2019-06-06 16:29:24 · 131 阅读 · 0 评论 -
从零单刷Leetcode(JAVA描述)——16. 最接近的三数之和
链接:https://leetcode-cn.com/problems/3sum-closest给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。例如,给定数组 nums = [-1,2,1,-4], 和 target = 1.与 target 最接近的三个...原创 2019-06-16 17:14:13 · 147 阅读 · 0 评论 -
从零单刷Leetcode(JAVA描述)——17. 电话号码的字母组合
链接:https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:“23”输出:[“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd...原创 2019-06-16 17:16:51 · 171 阅读 · 0 评论 -
从零单刷Leetcode(JAVA描述)——19. 删除链表的倒数第N个节点
链接:https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n ...原创 2019-09-04 21:42:02 · 210 阅读 · 0 评论 -
从零单刷Leetcode(JAVA描述)——20. 有效的括号
链接:https://leetcode-cn.com/problems/valid-parentheses给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: “()”输出: true示例 2:输入: “()...原创 2019-06-18 20:46:21 · 191 阅读 · 0 评论 -
从零单刷Leetcode(JAVA描述)——21. 合并两个有序链表
链接:https://leetcode-cn.com/problems/merge-two-sorted-lists将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4/** * Definition for...原创 2019-07-08 09:31:12 · 153 阅读 · 0 评论 -
从零单刷Leetcode(JAVA描述)——23. 合并K个排序链表
合并k个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入:[1->4->5,1->3->4,2->6]输出: 1->1->2->3->4->4->5->6来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/merge...原创 2019-09-24 10:16:32 · 216 阅读 · 0 评论 -
从零单刷Leetcode(JAVA描述)——24. 两两交换链表中的节点
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/swap-nodes-in-pairs著作权归领扣网络所有。...原创 2019-09-05 11:01:49 · 296 阅读 · 0 评论 -
从零单刷Leetcode(JAVA描述)——26.删除排序数组中的重复项
链接:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2],函数应该返...原创 2019-06-18 21:00:58 · 157 阅读 · 0 评论 -
从零单刷Leetcode(JAVA描述)——27. 移除元素
链接:https://leetcode-cn.com/problems/remove-element给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = ...原创 2019-06-20 20:34:15 · 137 阅读 · 0 评论 -
从零单刷Leetcode(JAVA描述)——28. 实现strStr()
链接:https://leetcode-cn.com/problems/implement-strstr实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。示例 1:输入: haystack = “hello”, needle = “...原创 2019-06-20 20:45:51 · 143 阅读 · 0 评论 -
从零单刷Leetcode(JAVA描述)—— 33. 搜索旋转排序数组
链接:https://leetcode-cn.com/problems/search-in-rotated-sorted-array假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。你可以假设数组中不存在重复的...原创 2019-07-11 18:05:53 · 175 阅读 · 0 评论 -
从零单刷Leetcode(JAVA描述)——35. 搜索插入位置
链接:https://leetcode-cn.com/problems/search-insert-position给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例 2:输入: [1,3,5,6], 2输出: 1示例 3:...原创 2019-06-27 17:32:39 · 124 阅读 · 0 评论 -
从零单刷Leetcode(JAVA描述)——43. 字符串相乘
链接:https://leetcode-cn.com/problems/multiply-strings给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。示例 1:输入: num1 = “2”, num2 = “3”输出: “6”示例 2:输入: num1 = “123”, num2 = “456”输出:...原创 2019-06-25 17:54:31 · 151 阅读 · 0 评论 -
从零单刷Leetcode(JAVA描述)——46. 全排列
链接:https://leetcode-cn.com/problems/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<...原创 2019-08-05 10:48:25 · 176 阅读 · 0 评论 -
从零单刷Leetcode(JAVA描述)——53. 最大子序和
链接:https://leetcode-cn.com/problems/maximum-subarray给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。进阶:如果你已经实现复杂度为 O(n) 的解法...原创 2019-06-27 16:14:47 · 115 阅读 · 0 评论 -
从零单刷Leetcode(JAVA描述)—— 54. 螺旋矩阵
链接:https://leetcode-cn.com/problems/spiral-matrix给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。示例 1:输入:[[ 1, 2, 3 ],[ 4, 5, 6 ],[ 7, 8, 9 ]]输出: [1,2,3,6,9,8,7,4,5]示例 2:输入:[[1, 2, ...原创 2019-07-12 15:28:00 · 123 阅读 · 0 评论 -
从零单刷Leetcode(JAVA描述)—— 59. 螺旋矩阵 II
链接:https://leetcode-cn.com/problems/spiral-matrix-ii给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。示例:输入: 3输出:[[ 1, 2, 3 ],[ 8, 9, 4 ],[ 7, 6, 5 ]]//其实思路和Leetcode 54差不多,就是按规律遍历,要细心一点,我也改...原创 2019-07-12 16:32:06 · 146 阅读 · 0 评论 -
从零单刷Leetcode(JAVA描述)——61. 旋转链表
链接:https://leetcode-cn.com/problems/rotate-list给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。示例 1:输入: 1->2->3->4->5->NULL, k = 2输出: 4->5->1->2->3->NULL解释:向右旋转 1 步: 5-&g...原创 2019-07-05 11:09:37 · 125 阅读 · 0 评论 -
从零单刷Leetcode(JAVA描述)——62. 不同路径
链接:https://leetcode-cn.com/problems/unique-paths一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?例如,上图是一个7 x 3 的网格。有多少可能的路径?说明:m 和 n 的值...原创 2019-06-27 16:34:59 · 157 阅读 · 0 评论 -
从零单刷Leetcode(JAVA描述)——63. 不同路径 II
链接:https://leetcode-cn.com/problems/unique-paths-ii一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用 1 ...原创 2019-06-27 17:15:46 · 131 阅读 · 0 评论 -
从零单刷Leetcode(JAVA描述)—— 70. 爬楼梯
链接:https://leetcode-cn.com/problems/climbing-stairs假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1 阶 + 1 阶2 阶示例 2:输入: 3输出: 3解...原创 2019-07-11 09:30:11 · 127 阅读 · 0 评论 -
从零单刷Leetcode(JAVA描述)—— 88. 合并两个有序数组
链接:https://leetcode-cn.com/problems/merge-sorted-array给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums...原创 2019-07-11 10:29:45 · 146 阅读 · 0 评论 -
从零单刷Leetcode(JAVA描述)——82. 删除排序链表中的重复元素 II
给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。示例 1:输入: 1->2->3->3->4->4->5输出: 1->2->5示例 2:输入: 1->1->1->2->3输出: 2->3来源:力扣(LeetCode)链接:https://leetcode-cn.com...原创 2019-09-05 17:10:31 · 248 阅读 · 0 评论 -
从零单刷Leetcode(JAVA描述)——83. 删除排序链表中的重复元素
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例 1:输入: 1->1->2输出: 1->2示例 2:输入: 1->1->2->3->3输出: 1->2->3来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/remove-duplicates-from-sor...原创 2019-09-05 11:49:44 · 179 阅读 · 0 评论 -
从零单刷Leetcode(JAVA描述)——88. 合并两个有序数组
给定两个有序整数数组nums1 和 nums2,将 nums2 合并到nums1中,使得num1 成为一个有序数组。说明:初始化nums1 和 nums2 的元素数量分别为m 和 n。你可以假设nums1有足够的空间(空间大小大于或等于m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m = 3nums2 = ...原创 2019-09-23 17:29:11 · 201 阅读 · 0 评论 -
剑指Offer:38.二叉树的深度 && 从零单刷Leetcode(JAVA描述)—— 104. 二叉树的最大深度
题目描述输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { ...原创 2019-07-21 19:40:35 · 211 阅读 · 0 评论 -
从零单刷Leetcode(JAVA描述)——118. 杨辉三角
给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 5输出:[[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/pascals-triangle著作权归领扣...原创 2019-09-10 12:29:00 · 175 阅读 · 0 评论