LeetCode刷题记录
LeetCode刷题记录
猾枭
这个作者很懒,什么都没留下…
展开
-
LeetCode - 无重复字符的最长子串【Java | LeetCode中级算法】
给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。示例1:输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: "pwwkew"输出: 3解释: 因为无重复字符的...原创 2020-03-05 14:09:45 · 263 阅读 · 0 评论 -
LeetCode - 字谜分组【Java | LeetCode中级算法】
给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例:输入: ["eat", "tea", "tan", "ate", "nat", "bat"],输出:[ ["ate","eat","tea"], ["nat","tan"], ["bat"]]说明:所有输入均为小写字母。 不考虑答案输出的顺序。要改进,太慢太慢了...原创 2020-03-04 16:52:01 · 154 阅读 · 0 评论 -
LeetCode - 矩阵置零【Java | LeetCode中级算法】
给定一个mxn的矩阵,如果一个元素为 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...原创 2020-03-03 17:30:55 · 227 阅读 · 0 评论 -
LeetCode - 买卖股票的最佳时机【Java | LeetCode初级】
买卖股票的最佳时机给定一个数组,它的第i个元素是一支给定股票第i天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 ...原创 2019-12-18 20:13:22 · 86 阅读 · 0 评论 -
LeetCode - 最大子序和【Java | LeetCode初级】
最大子序和给定一个整数数组nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释:连续子数组[4,-1,2,1] 的和最大,为6。进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。写这道题的时候想了想,用excel画...原创 2019-12-18 19:22:48 · 199 阅读 · 0 评论 -
LeetCode - 爬楼梯【Java | LeetCode初级】
假设你正在爬楼梯。需要n阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定n是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2. ...原创 2019-12-16 19:34:23 · 158 阅读 · 0 评论 -
LeetCode - 二叉树的层次遍历【Java | LeetCode初级】
给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。例如:给定二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [9,20], [15,7]]我的解答:/** * Definition for a ...原创 2019-12-03 11:39:27 · 164 阅读 · 0 评论 -
LeetCode - 对称二叉树【Java | LeetCode初级】
给定一个二叉树,检查它是否是镜像对称的。例如,二叉树[1,2,2,3,4,4,3]是对称的。 1 / \ 2 2 / \ / \3 4 4 3但是下面这个[1,2,2,null,3,null,3]则不是镜像对称的: 1 / \ 2 2 \ \ 3 3说明:如果你可以运用递归和迭代两种方法...原创 2019-12-02 15:08:10 · 216 阅读 · 0 评论 -
LeetCode - 验证二叉搜索树【Java | LeetCode初级】
给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。 节点的右子树只包含大于当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。示例1:输入: 2 / \ 1 3输出: true示例2:输入: 5 / \ 1 4 / \ 3 ...原创 2019-11-29 16:30:56 · 276 阅读 · 0 评论 -
LeetCode - 第一个错误的版本【Java | LeetCode初级】
你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。假设你有n个版本[1, 2, ..., n],你想找出导致之后所有版本出错的第一个错误的版本。你可以通过调用bool isBadVersion(version)接口来判断版本号version是否在单元测试中...原创 2019-11-29 14:46:13 · 103 阅读 · 0 评论 -
LeetCode - 二叉树的最大深度【Java | LeetCode初级】
给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明:叶子节点是指没有子节点的节点。示例:给定二叉树[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度3 。又是递归题,加油~/** * Definition for a ...原创 2019-11-28 16:40:01 · 255 阅读 · 0 评论 -
LeetCode - 合并两个有序链表【Java | LeetCode初级】
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4/** * Definition for singly-linked list. * public class ListNode { * ...原创 2019-11-28 14:34:40 · 85 阅读 · 0 评论 -
LeetCode - 环形链表【Java | LeetCode初级】
给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数pos来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果pos是-1,则在该链表中没有环。示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。示例2:输入:head = [1,2], pos ...原创 2019-11-28 14:33:23 · 129 阅读 · 0 评论 -
LeetCode - 反转链表【Java | LeetCode初级】
反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?下面用的是迭代法,下次试试用递归,用递归想半天没想出来,暂时搁置一下。/** * Definition for singly-l...原创 2019-11-28 13:56:22 · 116 阅读 · 0 评论 -
LeetCode - 回文链表【Java | LeetCode初级】
请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true进阶:你能否用O(n) 时间复杂度和 O(1) 空间复杂度解决此题?reverseList方法可见:反转链表写这题之前,写了反转链表,就联系起来了,比如: 1→2→1 反转为1→2→1...原创 2019-11-28 13:50:27 · 102 阅读 · 0 评论 -
LeetCode - 删除链表的倒数第N个节点【Java | LeetCode初级】
给定一个链表,删除链表的倒数第n个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的n保证是有效的。进阶:你能尝试使用一趟扫描实现吗? 不难,用快慢指针就好了,不过写的时候需...原创 2019-11-27 17:38:57 · 169 阅读 · 0 评论 -
LeetCode - 删除链表中的节点【Java | LeetCode初级】
请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。现有一个链表 --head =[4,5,1,9],它可以表示为:示例 1:输入: head = [4,5,1,9], node = 5输出: [4,1,9]解释: 给定你链表中值为5的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9....原创 2019-11-27 10:18:05 · 81 阅读 · 0 评论 -
LeetCode - 报数【Java | LeetCode初级】
报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:1. 12. 113. 214. 12115. 1112211被读作"one 1"("一个一") , 即11。11被读作"two 1s"("两个一"), 即21。21被读作"one 2", "one 1"("一个二",...原创 2019-11-26 19:35:46 · 171 阅读 · 0 评论 -
LeetCode - 最长公共前缀【Java | LeetCode初级】
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串""。示例1:输入: ["flower","flow","flight"]输出: "fl"示例2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。说明:所有输入只包含小写字母a-z。class Solution {...原创 2019-11-26 17:09:36 · 103 阅读 · 0 评论 -
LeetCode - 整数反转【Java | LeetCode初级】
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为[−231, 231− 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。...原创 2019-11-26 15:39:50 · 157 阅读 · 0 评论 -
Best Time to Buy and Sell Stock II 计算最佳买入卖出时间
这一题计算最佳买入卖出时间,可能是因为自己思路有问题吧,刚开始想的方向好奇怪,看了一下别人的解法才写出来,其实只要把利润全部都加起来就可以得到最大值了,因为可以随意选择买入时间,只要在卖出之前就好。class Solution { public int maxProfit(int[] prices) { int profit = 0; for(int ...原创 2018-10-11 23:02:39 · 174 阅读 · 0 评论 -
LeetCode - 从排序数组中删除重复项【Java | LeetCode初级】
题目:给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例1:给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为[1,2]。你不需要考虑数组中超出新长度后面的元素...原创 2019-07-01 17:16:02 · 144 阅读 · 0 评论 -
LeetCode - 移动零【Java | LeetCode初级】
给定一个数组nums,编写一个函数将所有0移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。 尽量减少操作次数。我的解答一:暴力解法,循环交换值class Solution { public void moveZeroes(int[...原创 2019-07-12 21:50:31 · 219 阅读 · 0 评论 -
LeetCode - 加一 【Java | LeetCode初级】
给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例2:输入: [4,3,2,1]输出: [4,3,2,2]解释: 输入数组表示数字 432...原创 2019-07-12 21:56:00 · 156 阅读 · 0 评论 -
LeetCode - 两数之和【Java | LeetCode初级】
给定一个整数数组 nums和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]我的...原创 2019-07-14 17:29:51 · 127 阅读 · 0 评论 -
LeetCode - 存在重复【Java | LeetCode初级】
给定一个整数数组,判断是否存在重复元素。如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。示例 1:输入: [1,2,3,1]输出: true示例 2:输入: [1,2,3,4]输出: false示例3:输入: [1,1,1,3,3,4,3,2,4,2]输出: true我的解法:先排序,然后遍历...原创 2019-07-14 18:44:27 · 72 阅读 · 0 评论 -
LeetCode - 买卖股票的最佳时机 II【Java | LeetCode初级】
给定一个数组,它的第i个元素是一支给定股票第i天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这...原创 2019-07-15 08:37:37 · 328 阅读 · 0 评论 -
LeetCode - 旋转数组【Java | LeetCode初级】
给定一个数组,将数组中的元素向右移动k个位置,其中k是非负数。示例 1:输入: [1,2,3,4,5,6,7] 和 k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转 3 步: [5,6,7,1,2,3,4]示例2:输入: [-1,-10...原创 2019-07-05 14:45:52 · 113 阅读 · 0 评论 -
LeetCode - 只出现一次的数字 【Java | LeetCode初级】
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例2:输入: [4,1,2,1,2]输出: 4我的解答:通过异或达到去重 相同数进行异或操作,结果为0,任何数与0异或,都是这个数...原创 2019-07-12 00:02:03 · 151 阅读 · 0 评论 -
LeetCode - 两个数组的交集 II 【Java | LeetCode初级】
给定两个数组,编写一个函数来计算它们的交集。示例 1:输入: nums1 = [1,2,2,1], nums2 = [2,2]输出: [2,2]示例 2:输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出: [4,9]说明:输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致。 我们可以不考虑输出结果的顺序。进阶...原创 2019-07-12 00:21:33 · 241 阅读 · 0 评论 -
LeetCode - 有效的数独【Java | LeetCode初级】
我的解答: 遍历每个元素,比较横行、竖行和3*3小方块原创 2019-07-16 19:57:14 · 78 阅读 · 0 评论 -
LeetCode - 反转字符串【Java | LeetCode初级】
我的解答:遍历n/2遍,相对于中心点进行交换原创 2019-07-16 20:03:21 · 115 阅读 · 0 评论 -
LeetCode - 验证回文字符串【Java | LeetCode初级】
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: "A man, a plan, a canal: Panama"输出: true示例 2:输入: "race a car"输出: false我的解答:因为是回文,所以可以用两个游标进行移动,当start大于end时,...原创 2019-07-23 20:32:15 · 245 阅读 · 0 评论 -
LeetCode - 字符串转换整数 (atoi)【Java | LeetCode初级】
请你来实现一个atoi函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。该字符串除了有效的整数部分之后也可能会存在多余的字符,这些字符...原创 2019-07-24 13:05:35 · 81 阅读 · 0 评论 -
LeetCode - 字符串中的第一个唯一字符【Java | LeetCode初级】
给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。案例:s = "leetcode"返回 0.s = "loveleetcode",返回 2.注意事项:您可以假定该字符串只包含小写字母。我的解答:两次遍历字符串,找到不重复的字母,时间复杂度为2O(n);class Solution { public int ...原创 2019-07-17 20:21:52 · 168 阅读 · 0 评论 -
LeetCode - 实现strStr()【Java | LeetCode初级】
实现strStr()函数。给定一个haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回-1。示例 1:输入: haystack = "hello", needle = "ll"输出: 2示例 2:输入: haystack = "aaaaa", need...原创 2019-07-26 15:50:56 · 155 阅读 · 0 评论 -
LeetCode - 有效的字母异位词【Java | LeetCode初级】
给定两个字符串s和t,编写一个函数来判断t是否是s的字母异位词。示例1:输入: s = "anagram", t = "nagaram"输出: true示例 2:输入: s = "rat", t = "car"输出: false说明:你可以假设字符串只包含小写字母。进阶:如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应...原创 2019-07-23 15:28:56 · 139 阅读 · 0 评论