
LeetCode题解
DUT_Walnut
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
leetcode#week2
文章目录[简单]#67二进制求和题目描述解答思路具体实现[简单]#67二进制求和题目描述给你两个二进制字符串,返回它们的和(用二进制表示)。输入为 非空 字符串且只包含数字 1 和 0。示例 1:输入: a = "11", b = "1"输出: "100"示例 2:输入: a = "1010", b = "1011"输出: "10101"提示:每个字符串仅由字符 '0' 或 '1' 组成。1 <= a.length, b.length <= 10^4字符串如果不是 "原创 2020-07-15 00:32:02 · 246 阅读 · 0 评论 -
leetcode#week1
文章目录[简单]#66 加一题目描述简单想法具体实现解法二结果解法二试图优化失败[简单]#66 加一题目描述给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。简单想法一种考虑是先提取数组为字符串再后续atoi转为int,然后加一后输出为数组,但是想了想所需要的内存消耗,好像不ok。另一种考虑是加法进位,只要找出在哪一位进位就可以了,然后选择了以新数组存结果的方式,执原创 2020-07-12 00:53:57 · 237 阅读 · 0 评论 -
LeetCode#322零钱兑换
题目描述给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。示例 1:输入: coins = [1, 2, 5], amount = 11输出: 3 解释: 11 = 5 + 5 + 1示例 2:输入: coins = [2], amount = 3输出: -1说...原创 2020-02-22 20:45:26 · 159 阅读 · 0 评论 -
LeetCode#62不同路径
题目描述一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?简单分析动态规划问题,找到状态方程之后一切就好办了,直接按照递归思想即可。nums[i][j]=nums[i-1][j]+nums[i][j-1]代码cla...原创 2020-02-22 19:35:00 · 168 阅读 · 0 评论 -
LeetCode#378有序矩阵中第k小元素
题目描述给定一个 n x n 矩阵,其中每行和每列元素均按升序排序,找到矩阵中第k小的元素。请注意,它是排序后的第k小元素,而不是第k个元素。示例:matrix = [ [ 1, 5, 9], [10, 11, 13], [12, 13, 15]],k = 8,返回 13。说明:你可以假设 k 的值永远是有效的, 1 ≤ k ≤ n2 。简单分析...原创 2020-02-22 18:44:13 · 257 阅读 · 0 评论 -
LeetCode#105从前序中序构建二叉树
题目描述根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3 / \ 9 20 / \ 15 7简单分析学数据结构时候做过类似的,当时是字符串构建,然后想着用...原创 2020-02-17 15:41:06 · 289 阅读 · 0 评论 -
LeetCode#454四数相加II
题目描述给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i] + B[j] + C[k] + D[l] = 0。为了使问题简单化,所有的 A, B, C, D 具有相同的长度 N,且 0 ≤ N ≤ 500 。所有整数的范围在 -228 到 228 - 1 之间,最终结果不会超过 231 - 1 。例如:输入:A =...原创 2020-02-16 16:26:01 · 196 阅读 · 0 评论 -
LeetCode#148排序链表
题目描述在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。示例 1:输入: 4->2->1->3输出: 1->2->3->4示例 2:输入: -1->5->3->4->0输出: -1->0->3->4->5简单分析开始想用快排,然后发现结果不容乐观然后看了看题解,...原创 2020-02-05 21:39:40 · 183 阅读 · 0 评论 -
LeetCode#215数组中第K个最大的元素
题目描述在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。示例 1:输入: [3,2,1,5,6,4] 和 k = 2输出: 5示例 2:输入: [3,2,3,1,2,4,5,5,6] 和 k = 4输出: 4简单分析第K大第K小想到堆,第K大构建最大堆,不断弹出栈顶,直到第k次即可,C++提供了...原创 2020-01-27 14:20:47 · 166 阅读 · 0 评论 -
LeetCode#236二叉树的最近公共祖先
题目描述给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4] 示例 1:输入: ro...原创 2020-01-27 12:23:33 · 297 阅读 · 0 评论 -
LeetCode#230二叉搜索树中第k小的元素
题目描述给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。说明:你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数。示例 1:输入: root = [3,1,4,null,2], k = 1 3 / \ 1 4 \ 2输出: 1示例 2:输入: root = [5,3,6,2,4,null,nul...原创 2020-01-18 21:52:57 · 151 阅读 · 0 评论 -
LeetCode#88合并两个有序数组
题目描述给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m = 3num...原创 2020-01-18 21:40:37 · 221 阅读 · 0 评论 -
LeetCode#292Nim游戏
题目描述你和你的朋友,两个人一起玩 Nim 游戏:桌子上有一堆石头,每次你们轮流拿掉 1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。你作为先手。你们是聪明人,每一步都是最优解。 编写一个函数,来判断你是否可以在给定石头数量的情况下赢得游戏。示例:输入: 4输出: false 解释: 如果堆中有 4 块石头,那么你永远不会赢得比赛; 因为无论你拿走 1 块、2 块...原创 2020-01-18 21:27:33 · 172 阅读 · 0 评论 -
LeetCode#344反转字符串
题目描述编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。 示例 1:输入:["h","e","l","l","o"]输出:["o","l","l","e","h"]示例...原创 2020-01-18 21:23:00 · 207 阅读 · 0 评论 -
LeetCode#557反转字符串中的单词
题目描述给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。示例 1:输入: "Let's take LeetCode contest"输出: "s'teL ekat edoCteeL tsetnoc" 注意:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。简单分析分词,然后每个词一倒序,只需要一个字符串存储当前倒序的结...原创 2020-01-18 20:55:55 · 213 阅读 · 0 评论 -
LeetCode#15三数之和【思路参考题解】
题目描述给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。 示例:给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2]]简...原创 2020-01-17 23:24:25 · 236 阅读 · 0 评论 -
LeetCode#58最后一个单词的长度
题目描述给定一个仅包含大小写字母和空格 ' ' 的字符串 s,返回其最后一个单词的长度。如果字符串从左向右滚动显示,那么最后一个单词就是最后出现的单词。如果不存在最后一个单词,请返回 0 。说明:一个单词是指仅由字母组成、不包含任何空格的 最大子字符串。 示例:输入: "Hello World"输出: 5简单分析直接分词然后取最后一个即可。python提供的分词很...原创 2020-01-17 22:47:27 · 157 阅读 · 0 评论 -
LeetCode#53最大子序和
题目描述给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。简单分析直接暴力求解,已知和最大则要加上去的数一定是正数,若不是则终止相加并判断当前和与历史最大和的大小,视情况更新历史最大和。代码c...原创 2020-01-17 22:21:08 · 192 阅读 · 0 评论 -
LeetCode#35搜索插入位置
题目描述给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 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输出:...原创 2020-01-17 21:04:19 · 222 阅读 · 0 评论 -
LeetCode#28实现strStr()
题目描述实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。示例 1:输入: haystack = "hello", needle = "ll"输出: 2示例 2:输入: haystack = "aaaaa", need...原创 2020-01-17 15:22:51 · 154 阅读 · 0 评论 -
LeetCode#3无重复字符的最长字串
题目描述给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: "pwwkew"输出: 3解释: 因为无重复字符的最长子...原创 2020-01-16 22:59:26 · 200 阅读 · 0 评论 -
LeetCode#27移除元素
题目描述给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums...原创 2020-01-16 22:01:48 · 146 阅读 · 0 评论 -
LeetCode#26删除排序数组中的重复项
题目描述给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新长度后面的元素。示例...原创 2020-01-16 21:55:31 · 187 阅读 · 0 评论 -
LeetCode#合并两个有序链表
题目描述将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4简单分析考虑将两个链表指针元素依次比较放入新链表中,将链表元素放入新链表后再将该链表指针后移,继续比较指针元素即可,直至一方比较完,长度较长的再...原创 2020-01-16 21:28:10 · 173 阅读 · 0 评论 -
LeetCode#20有效的括号
题目描述给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例 2:输入: "()[]{}"输出: true示例 3:输入: "(]"输出: false示例 ...原创 2020-01-16 19:59:39 · 181 阅读 · 0 评论 -
LeetCode#12整数转罗马数字
问题描述罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列...原创 2020-01-15 16:17:34 · 296 阅读 · 0 评论 -
LeetCode#14最长公共前缀
问题描述编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。示例 1:输入: ["flower","flow","flight"]输出: "fl"示例 2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。说明:所有输入只包含小写字母 a-z 。简单分析选出前两个的最长公共前缀和后面...原创 2020-01-15 15:15:02 · 184 阅读 · 0 评论 -
LeetCode#13罗马数字转整数
题目描述罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列...原创 2020-01-15 14:49:50 · 245 阅读 · 0 评论 -
LeetCode#9回文数
题目描述判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。...原创 2020-01-15 12:59:11 · 206 阅读 · 0 评论 -
LeetCode#7整数反转
LeetCode#7整数反转题目描述简单分析代码题目描述给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321 示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设...原创 2020-01-15 12:22:05 · 218 阅读 · 0 评论