leetcode
musite
今天也是头秃敲代码的一天呢。
展开
-
算法练习Day24[LeetCode]206. 反转链表
206. 反转链表反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?方法一:迭代class Solution { public ListNode reverseList(ListNode head) { ListNode prev = null; ListNode cu原创 2021-03-01 12:47:11 · 182 阅读 · 0 评论 -
算法练习Day23[LeetCode]33. 搜索旋转排序数组
33. 搜索旋转排序数组升序排列的整数数组 nums 在预先未知的某个点上进行了旋转(例如, [0,1,2,4,5,6,7] 经旋转后可能变为 [4,5,6,7,0,1,2] )。请你在数组中搜索 target ,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。示例 1:输入:nums = [4,5,6,7,0,1,2], target = 0输出:4示例 2:输入:nums = [4,5,6,7,0,1,2], target = 3输出:-1示例 3:输入:nums =原创 2021-02-21 23:11:58 · 133 阅读 · 0 评论 -
算法练习Day22[LeetCode]46. 全排列
46. 全排列给定一个 没有重复 数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,2,1], [3,1,2]]回溯法 :一种通过探索所有可能的候选解来找出所有的解的算法。如果候选解被确认不是一个解的话(或者至少不是最后一个解),回溯算法会通过在上一步进行一些变化抛弃该解,即回溯并且再次尝试。class Solution { public List<原创 2021-02-19 16:52:36 · 99 阅读 · 0 评论 -
算法练习Day21[LeetCode]199. 二叉树的右视图
199. 二叉树的右视图给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。示例:输入: [1,2,3,null,5,null,4]输出: [1, 3, 4]解释: 1 <--- / \2 3 <--- \ \ 5 4 <---方法一:广度优先搜索看到题目后,我们能立刻想到对二叉树采用层次遍历的方法,对于每层来说,最右边的结点一定是最后被遍原创 2021-02-18 17:31:09 · 131 阅读 · 0 评论 -
算法练习Day20[LeetCode]70. 爬楼梯
70. 爬楼梯假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1 阶 + 1 阶2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1 阶 + 1 阶 + 1 阶1 阶 + 2 阶2 阶 + 1 阶方法:动态规划我们用 f(x) 表示爬到第 x级台阶的方案数,考虑最后一步可能跨了一级台阶,也原创 2021-02-17 22:13:25 · 170 阅读 · 0 评论 -
算法练习Day19[LeetCode]139. 单词拆分
139. 单词拆分标题给定一个非空字符串 s 和一个包含非空单词的列表 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。示例 1:输入: s = "leetcode", wordDict = ["leet", "code"]输出: true解释: 返回 true 因为 "leetcode" 可以被拆分成 "leet code"。示例 2:输入: s = "applepenapple",原创 2021-02-15 22:33:05 · 253 阅读 · 1 评论 -
算法练习Day18[LeetCode]121. 买卖股票的最佳时机
121. 买卖股票的最佳时机给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。示例 1:输入:[7,1,5,3,6,4]输出:5解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5原创 2021-02-14 20:23:12 · 150 阅读 · 0 评论 -
算法练习Day17[LeetCode]1014. 最佳观光组合
1014. 最佳观光组合给定正整数数组 A,A[i] 表示第 i 个观光景点的评分,并且两个景点 i 和 j 之间的距离为 j - i。 一对景点(i < j)组成的观光组合的得分为(A[i] + A[j] + i - j):景点的评分之和减去它们两者之间的距离。返回一对观光景点能取得的最高分。示例:输入:[8,1,5,2,6]输出:11解释:i = 0, j = 2, A[i] + A[j] + i - j = 8 + 5 + 0 - 2 = 11提示:2 <= A.le原创 2021-02-13 16:45:49 · 143 阅读 · 0 评论 -
算法练习Day16[LeetCode]42. 接雨水
42. 接雨水给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。示例 1:输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]输出:6解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。示例 2:输入:height = [4,2,0,3,2,5]输出:9提示:n == height.length0 <= n <原创 2021-02-12 22:08:11 · 258 阅读 · 0 评论 -
算法练习Day15[LeetCode]53. 最大子序和
今天是除夕,祝大家新年快乐。言之命至,天随人愿。53. 最大子序和53. 最大子序和给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例 1:输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。示例 2:输入:nums = [1]输出:1示例 3:输入:nums = [0]输出:0示例 4:输入:nums = [-1]输出:-1原创 2021-02-11 16:47:05 · 103 阅读 · 0 评论 -
算法练习Day14[LeetCode]5. 最长回文子串
5. 最长回文子串给你一个字符串 s,找到 s 中最长的回文子串。 示例 1:输入:s = "babad"输出:"bab"解释:"aba" 同样是符合题意的答案。示例 2:输入:s = "cbbd"输出:"bb"示例 3:输入:s = "a"输出:"a"示例 4:输入:s = "ac"输出:"a" 提示:1. 1 <= s.length <= 10002. s 仅由数字和英文字母(大写和/或小写)组成法一:动态规划对于一个子串而言,如果它是回文串,原创 2021-02-10 15:03:19 · 214 阅读 · 0 评论 -
算法练习Day13[LeetCode]990. 等式方程的可满足性
990. 等式方程的可满足性给定一个由表示变量之间关系的字符串方程组成的数组,每个字符串方程 equations[i] 的长度为 4,并采用两种不同的形式之一:"a==b" 或 "a!=b"。在这里,a 和 b 是小写字母(不一定不同),表示单字母变量名。只有当可以将整数分配给变量名,以便满足所有给定的方程时才返回 true,否则返回 false。 示例 1:输入:["a==b","b!=a"]输出:false解释:如果我们指定,a = 1 且 b = 1,那么可以满足第一个方程,但无原创 2021-02-10 00:44:43 · 140 阅读 · 0 评论 -
算法练习Day12[LeetCode]200. 岛屿数量
200. 岛屿数量200. 岛屿数量给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。 示例 1:输入:grid = [ ["1","1","1","1","0"], ["1","1","0","1","0"], ["1","1","0","0","0"], ["0","0","0","0","0"]]输出:原创 2021-02-09 00:50:18 · 447 阅读 · 0 评论 -
算法练习Day11 [LeetCode]560. 和为 K 的子数组
560. 和为 K 的子数组给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数。示例 1 :输入:nums = [1,1,1], k = 2输出: 2 , [1,1] 与 [1,1] 为两种不同的情况。说明 :数组的长度为 [1, 20,000]。数组中元素的范围是 [-1000, 1000] ,且整数 k 的范围是 [-1e7, 1e7]。暴力解法:class Solution { public int subarraySum(int[]原创 2021-02-02 21:55:37 · 171 阅读 · 0 评论 -
算法练习Day10 [LeetCode]974. 和可被 K 整除的子数组
974. 和可被 K 整除的子数组给定一个整数数组 A,返回其中元素之和可被 K 整除的(连续、非空)子数组的数目。 示例:输入:A = [4,5,0,-2,-3,1], K = 5输出:7解释:有 7 个子数组满足其元素之和可被 K = 5 整除:[4, 5, 0, -2, -3, 1], [5], [5, 0], [5, 0, -2, -3], [0], [0, -2, -3], [-2, -3] 提示:1. 1 <= A.length <= 300002. -原创 2021-02-01 21:19:54 · 161 阅读 · 2 评论 -
算法练习Day9 [LeetCode]415. 字符串相加
415. 字符串相加给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。 提示:num1 和num2 的长度都小于 5100num1 和num2 都只包含数字 0-9num1 和num2 都不包含任何前导零你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式class Solution { public String addStrings(String num1, String num2) { int i原创 2021-01-29 23:56:32 · 118 阅读 · 0 评论 -
算法练习Day8 [LeetCode]15. 三数之和
[LeetCode]15. 三数之和给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。示例 1:输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]示例 2:输入:nums = []输出:[]示例 3:输入:nums = [0]输出:[] 提示:0 <= nums.le原创 2021-01-27 20:39:57 · 87 阅读 · 0 评论 -
算法练习Day7 [LeetCode]有序数组相关问题
[LeetCode]有序数组相关问题88. 合并两个有序数组给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 的空间大小等于 m + n,这样它就有足够的空间保存来自 nums2 的元素。示例 1:输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3输出:[1,2原创 2021-01-26 18:34:59 · 224 阅读 · 0 评论 -
算法练习Day6 [LeetCode]滑动窗口相关题目
[LeetCode]滑动窗口相关题目首先我们要了解什么是滑动窗口?滑动窗口算法可以用以解决数组/字符串的子元素问题,它可以将嵌套的循环问题,转换为单循环问题,降低时间复杂度。滑动窗口最大值给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。示例 1:输入:nums = [1,3,-1,-3,5,3,6,7], k = 3输出:[3,3,5,5,6,7原创 2021-01-25 18:58:29 · 142 阅读 · 0 评论 -
算法练习Day5 [LeetCode]1248.优美子数组
[LeetCode]1248.优美子数组给你一个整数数组 nums 和一个整数 k。如果某个 连续 子数组中恰好有 k 个奇数数字,我们就认为这个子数组是「优美子数组」。请返回这个数组中「优美子数组」的数目。示例 1:输入:nums = [1,1,2,1,1], k = 3 输出:2解释:包含 3 个奇数的子数组是 [1,1,2,1] 和 [1,2,1,1] 。示例 2:输入:nums = [2,4,6], k = 1 输出:0解释:数列中不包含任何奇数,所以不存在优美子数组。示例 3原创 2021-01-24 22:01:30 · 148 阅读 · 0 评论 -
算法练习Day4 [LeetCode]缺失的第一个正数
[LeetCode]缺失的第一个正数给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。进阶:你可以实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案吗?示例 1:输入:nums = [1,2,0] 输出:3 示例 2:输入:nums = [3,4,-1,1] 输出:2 示例 3:输入:nums = [7,8,9,11,12] 输出:1提示:0 <= nums.length <= 300-231 <= nums[i] <= 23原创 2021-01-23 13:49:11 · 196 阅读 · 0 评论 -
算法练习Day3 [LeetCode] Add Two Numbers 两数相加
[LeetCode] Add Two Numbers 两数相加You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.You原创 2020-07-18 22:33:57 · 131 阅读 · 0 评论 -
算法练习Day2[LeetCode] Two Sum两数之和
[LeetCode] 1. Two Sum 两数之和Given an array of integers, return indices of the two numbers such that they add up to a specific target.You may assume that each input would have exactly one solution, and you may not use the same element twice.Example:Given原创 2020-07-14 22:20:44 · 193 阅读 · 0 评论