![](https://img-blog.csdnimg.cn/20190726171757608.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
LeetCode思悟
本专栏将长期、每天不断更分享Leetcode刷题经验和算法技巧总结。在打渔的过程中总结打渔经验,并通过打渔经验反哺打渔活动。
是启山啊
博采众长,自成一派
展开
-
LeetCode第35题思悟——搜索插入位置(search-insert-position)
LeetCode第35题思悟——搜索插入位置(search-insert-position)知识点预告二分查找是left、right定界的意义:left之前的数,比target小;right之后的数,比target大;对插入位置的理解题目要求给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重...原创 2019-08-25 22:31:15 · 278 阅读 · 0 评论 -
LeetCode第34题思悟——在排序数组中查找元素的第一个和最后一个位置(find-first-and-last-position-of-element-in-sorted-array)
LeetCode第34题思悟——在排序数组中查找元素的第一个和最后一个位置(find-first-and-last-position-of-element-in-sorted-array)知识点预告二分查找的核心:定界;题目要求给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。你的算法时间复杂度必须是 O(log n)...原创 2019-08-24 20:48:48 · 288 阅读 · 0 评论 -
LeetCode第33题思悟——搜索旋转排序数组(search-in-rotated-sorted-array)
LeetCode第33题思悟——搜索旋转排序数组(search-in-rotated-sorted-array)文章目录LeetCode第33题思悟——搜索旋转排序数组(search-in-rotated-sorted-array)知识点预告题目要求示例我的思路优秀解法差异分析知识点小结知识点预告二分查找的本质理解;双指针锁定技巧;题目要求假设按照升序排序的数组在预先未知的某个点...原创 2019-08-23 20:46:46 · 287 阅读 · 0 评论 -
LeetCode第32题思悟——最长有效括号(longest-valid-parentheses)
LeetCode第32题思悟——最长有效括号(longest-valid-parentheses)知识点预告栈的使用方法;长度的计算方法;数组的妙用;题目要求给定一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长的包含有效括号的子串的长度。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/longest-valid-pare...原创 2019-08-22 18:35:50 · 446 阅读 · 0 评论 -
LeetCode第31题思悟——下一个排列(next-permutation)
LeetCode第31题思悟——下一个排列(next-permutation)知识点预告简洁的变量命名;重复代码的抽离;对问题的理解和分析;题目要求实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须原地修改,只允许使用额外常数空间。来源:力扣(LeetCode)链...原创 2019-08-21 19:36:26 · 256 阅读 · 0 评论 -
LeetCode第30题思悟——串联所有单词的子串(substring-with-concatenation-of-all-words)
LeetCode第30题思悟——串联所有单词的子串(substring-with-concatenation-of-all-words)知识点预告HashMap的统计作用;遍历字符串的技巧;题目要求给定一个字符串 s 和一些长度相同的单词 words。找出 s 中恰好可以由 words 中所有单词串联形成的子串的起始位置。注意子串要与 words 中的单词完全匹配,中间不能有其他...原创 2019-08-20 22:08:23 · 243 阅读 · 0 评论 -
LeetCode第29题思悟——两数相除(divide-two-integers)
LeetCode第29题思悟——两数相除(divide-two-integers)知识点预告对于Int型整数溢出的处理;对于运算结果符号的判定;位移运算的使用;题目要求给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。返回被除数 dividend 除以除数 divisor 得到的商。来源:力扣(LeetCode...原创 2019-08-19 17:40:25 · 276 阅读 · 0 评论 -
LeetCode第28题思悟——strStr(implement-strstr)
LeetCode第28题思悟——strStr(implement-strstr)知识点预告注意算法的使用场景和优劣分析;参数边界条件的处理题目要求给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。链接:https://leetcode-cn.com/p...原创 2019-08-18 20:05:54 · 191 阅读 · 0 评论 -
LeetCode第27题思悟——移出元素(remove-element)
LeetCode第27题思悟——移出元素(remove-element)知识点预告双指针遍历数组;处理问题的一致性;题目要求给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元...原创 2019-08-17 20:16:02 · 289 阅读 · 0 评论 -
LeetCode第26题思悟——删除排序数组中的重复项(remove-duplicates-from-sorted-array)
LeetCode第26题思悟——删除排序数组中的重复项(remove-duplicates-from-sorted-array)知识点预告双指针遍历数组的技巧;题目要求给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。来源:力扣(LeetCod...原创 2019-08-16 18:21:49 · 300 阅读 · 0 评论 -
LeetCode第25题思悟——K 个一组翻转链表(reverse-nodes-in-k-group)
LeetCode第25题思悟——K 个一组翻转链表(reverse-nodes-in-k-group)知识点预告重复性操作的处理方法:使用双重循环和递归的方法处理;边界变量的选择:简单变量较好;题目要求给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。...原创 2019-08-15 21:22:19 · 265 阅读 · 0 评论 -
LeetCode第24题思悟——两两交换链表中的节点(swap-nodes-in-pairs)
LeetCode第24题思悟——两两交换链表中的节点(swap-nodes-in-pairs)文章目录LeetCode第24题思悟——两两交换链表中的节点(swap-nodes-in-pairs)知识点预告题目要求示例我的思路优秀解法差异分析知识点小结知识点预告空头指针的处理技巧;按部就班地翻译题目要求;题目要求给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是...原创 2019-08-14 18:43:14 · 210 阅读 · 0 评论 -
Leetcode第23题思悟——合并K个排序链表(merge-k-sorted-lists)
Leetcode第23题思悟——合并K个排序链表(merge-k-sorted-lists)文章目录Leetcode第23题思悟——合并K个排序链表(merge-k-sorted-lists)知识点预告题目要求示例我的思路优秀解法差异分析知识点小结知识点预告分治思想题目要求合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。来源:力扣(LeetCode)链接:...原创 2019-08-13 20:16:03 · 293 阅读 · 0 评论 -
LeetCode第22题思悟——括号生成(generate-parentheses)
LeetCode第22题思悟——括号生成(generate-parentheses)文章目录LeetCode第22题思悟——括号生成(generate-parentheses)知识点预告题目要求示例我的思路优秀解法差异分析知识点小结知识点预告深度优先遍历的应用;递归的理解;结果集的传递:参数传递、类成员变量传递;题目要求给出 n 代表生成括号的对数,请你写出一个函数,使其能够生...原创 2019-08-12 13:08:06 · 261 阅读 · 0 评论 -
LeetCode第21题思悟——合并两个有序链表(merge-two-sorted-lists)
LeetCode第21题思悟——合并两个有序链表(merge-two-sorted-lists)文章目录LeetCode第21题思悟——合并两个有序链表(merge-two-sorted-lists)知识点预告题目要求示例我的思路优秀解法差异分析知识点小结知识点预告空头节点的处理;题目要求将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。...原创 2019-08-12 13:07:10 · 403 阅读 · 0 评论 -
LeetCode第20题思悟——有效的括号(valid-parentheses)
LeetCode第20题思悟——有效的括号(valid-parentheses)文章目录LeetCode第20题思悟——有效的括号(valid-parentheses)知识点预告题目要求示例我的思路优秀解法差异分析知识点小结知识点预告数据结构类型的选择——栈;数据结构实现的选择——简单高效;算法和数据结构的密切关系——要实现1+1>2的效果:相辅相成,互相成就;题目要求给...原创 2019-08-12 13:06:21 · 375 阅读 · 0 评论 -
LeetCode第19题思悟——删除链表的倒数第N个节点(remove-nth-node-from-end-of-list)
LeetCode第19题思悟——删除链表的倒数第N个节点(remove-nth-node-from-end-of-list)文章目录LeetCode第19题思悟——删除链表的倒数第N个节点(remove-nth-node-from-end-of-list)知识点预告题目要求示例我的思路优秀解法差异分析知识点小结知识点预告双指针遍历技巧得以扩展:同向同速双指针遍历;思考问题的模式:归纳【尾...原创 2019-08-12 13:05:13 · 229 阅读 · 0 评论 -
LeetCode第18题思悟——四数之和(4sum)
LeetCode第18题思悟——四数之和(4sum)文章目录LeetCode第18题思悟——四数之和(4sum)知识点预告题目要求示例我的思路优秀解法差异分析知识点小结知识点预告数组排序预处理:无序变有序;去重操作的位置选择:去掉冗余代码;遍历前的预判断处理:快速筛选处理;题目要求给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四...原创 2019-08-08 18:51:12 · 272 阅读 · 0 评论 -
LeetCode第17题思悟——电话号码的字母组合(letter-combinations-of-a-phone-number)
LeetCode第17题思悟——电话号码的字母组合(letter-combinations-of-a-phone-number)文章目录LeetCode第17题思悟——电话号码的字母组合(letter-combinations-of-a-phone-number)知识点预告题目要求示例我的思路优秀解法差异分析知识点小结知识点预告分治的解题思想和递归的处理手段;利用组合问题的特点,通过计算...原创 2019-08-07 11:44:42 · 368 阅读 · 0 评论 -
LeetCode第16题思悟——最接近的三数之和(3sum-closest)
LeetCode第16题思悟——最接近的三数之和(3sum-closest)知识点预告数组预处理:排序;双指针遍历数组的处理方法;题目要求给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。来源:力扣(LeetCode)链接:https://le...原创 2019-08-06 17:45:56 · 234 阅读 · 0 评论 -
LeetCode第15题思悟——三数之和(3sum)
LeetCode第15题思悟——三数之和(3sum)文章目录LeetCode第15题思悟——三数之和(3sum)知识点预告题目要求示例我的思路优秀解法差异分析知识点小结知识点预告预处理数据的常见手段:排序;双指针遍历数组,在范围内寻找两个数;数组去重处理;题目要求给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c...原创 2019-08-05 17:47:11 · 239 阅读 · 0 评论 -
LeetCode第14题思悟——最长公共前缀(ongest-common-prefix)
LeetCode第14题思悟——最长公共前缀(ongest-common-prefix)文章目录LeetCode第14题思悟——最长公共前缀(ongest-common-prefix)知识点预告题目要求示例我的思路优秀解法差异分析知识点回顾知识点预告双重循环——在内循环中终止外循环的技巧;寻找公共的思路:米字型和链表型;获取答案的方式:由小到大,和由大到小,或者说拼装和裁剪;题目要...原创 2019-08-04 19:24:57 · 237 阅读 · 0 评论 -
LeetCode第13题思悟——罗马数字转整型(roman-to-integer)
LeetCode第13题思悟——罗马数字转整型(roman-to-integer)文章目录LeetCode第13题思悟——罗马数字转整型(roman-to-integer)知识点预告题目要求示例我的思路优秀解法差别分析知识点总结回顾知识点预告标记变量的使用;对检测行为发生时机的选择;题目要求罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 ...原创 2019-08-03 18:53:00 · 171 阅读 · 0 评论 -
LeetCode第12题思悟——整数转罗马数字(integer-to-roman)
LeetCode第12题思悟——整数转罗马数字(integer-to-roman)文章目录LeetCode第12题思悟——整数转罗马数字(integer-to-roman)知识点预告题目要求示例我的思路其他优秀的解法差别分析知识点小结知识点预告获取整数确定数位上数字的方法;映射的解题思路;翻译“题目要求”的处理手段;题目要求罗马数字包含以下七种字符: I, V, X, L,C,...原创 2019-08-02 18:01:09 · 290 阅读 · 0 评论 -
LeetCode第11题思悟——盛最多水的容器(container-with-most-water)
LeetCode第11题思悟——盛最多水的容器(container-with-most-water)文章目录LeetCode第11题思悟——盛最多水的容器(container-with-most-water)文章知识点预告题目要求示例我的思路优秀解法差别在哪里知识点小结文章知识点预告双指针遍历技巧;移动小指针的分析;暴力求解的一种优化:使用空间换时间;数学很重要;题目要求给定 ...原创 2019-08-01 18:15:54 · 341 阅读 · 0 评论 -
LeetCode思悟专栏汇总
LeetCode思悟专栏WhoNil Xuan,喜欢创造,享受思考,乐于分享的程序猿。What本专栏将长期、每天不断更分享Leetcode刷题经验和算法技巧总结。Why我们知道,“学而不思则罔,思而不学则殆”。算法的学习更是如此:我们应该在打渔的过程中总结打渔经验,并通过打渔经验反哺打渔活动。而本专栏就是基于这样的出发点而设立。另外,有些问题,还需要解释或者思考清楚,正所谓,谋...原创 2019-08-01 08:40:28 · 272 阅读 · 0 评论 -
LeetCode第10题思悟——正则表达式匹配(regular-expression-matching)
文章目录第十题——正则表达式匹配题目要求示例我的思路优秀解法差别分析第十题——正则表达式匹配题目要求给定一个字符串 (s) 和一个字符模式 (p)。实现支持 '.' 和 '*' 的正则表达式匹配。'.' 匹配任意单个字符。'*' 匹配零个或多个前面的元素。匹配应该覆盖整个字符串 (s) ,而不是部分字符串。说明:s可能为空,且只包含从 a-z`的小写字母。p可能为空,且只包含从...原创 2019-07-19 08:47:06 · 302 阅读 · 0 评论 -
LeetCode第9题思悟——回文数(Palindrome Number)
文章目录第九题题目要求示例我的思路优秀解法差别在哪里第九题题目要求判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例输入: 121输出: true输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。输入: 10输出: false解释: 从右向左读, 为 0...原创 2019-07-19 08:48:24 · 383 阅读 · 0 评论 -
LeetCode第8题思悟——字符串转换整数 (atoi)
文章目录第八题题目要求示例我的思路优秀解法差别在哪里第八题题目要求请你来实现一个 atoi 函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。...原创 2019-07-19 08:48:58 · 151 阅读 · 0 评论 -
LeetCode第7题思悟——整数反转(Reverse Integer)
第七题题目要求Given a 32-bit signed integer, reverse digits of an integer.给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例输入: 123输出: 321输入: -123输出: -321输入: 120输出: 21假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231...原创 2019-07-19 08:49:18 · 169 阅读 · 0 评论 -
LeetCode第6题思悟——Z 字形变换(zigzag-conversion)
文章目录第六题题目要求示例我的思路优秀解法差别在哪里第六题题目要求将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 "LEETCODEISHIRING" 行数为 3 时,排列如下:L C I RE T O E S I I GE D H N之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"LCIRETO...原创 2019-07-19 08:49:27 · 307 阅读 · 0 评论 -
LeetCode第5题思悟——最长回文子串(longest-palindromic-substring)
文章目录第五题题目要求示例我的思路优秀解法差别在哪里第五题题目要求Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.(给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。)示例...原创 2019-07-19 08:49:43 · 322 阅读 · 0 评论 -
LeetCode第4题思悟——两个排序数组的中位数
第四题题目要求给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。(There are two sorted arrays nums1 and nums2 of size m and n respectively.Find the...原创 2019-07-19 08:49:51 · 692 阅读 · 0 评论 -
LeetCode第3题思悟——无重复字符的最长子串(longest-substring-without-repeating-characters)
第三题题目要求Given a string, find the length of the longest substring without repeating characters.(给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。)示例输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。输入: “bbbbb”...原创 2019-07-19 08:50:05 · 695 阅读 · 0 评论 -
LeetCode第2题思悟——两数相加(Add Two Numbers)
第二题1. 题目要求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 ...原创 2019-07-19 08:50:14 · 313 阅读 · 0 评论 -
LeetCode第1题思悟——两数之和(Two Sum)
失败不是天生就是成功之母!吃一堑也不一定长一智,但是对吃一堑的反思可以 第一题1. 题目要求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...原创 2019-07-19 08:50:21 · 660 阅读 · 2 评论 -
LeetCode第44题思悟——通配符匹配(wildcard-matching)
LeetCode第44题思悟——通配符匹配(wildcard-matching)知识点预告回退的处理——*从匹配null开始,记录当前*匹配的位置,以便回溯;动态规划的思想;题目要求给定一个字符串 (s) 和一个字符模式 § ,实现一个支持 ‘?’ 和 ‘*’ 的通配符匹配。‘?’ 可以匹配任何单个字符。‘*’ 可以匹配任意字;符串(包括空字符串)。两个字符串完全匹配才算匹配...原创 2019-09-03 10:15:47 · 413 阅读 · 0 评论 -
LeetCode第45题思悟——跳跃游戏(jump-game-ii)
LeetCode第45题思悟——跳跃游戏(jump-game-ii)知识点预告贪心思想;去冗余的分析意识;题目要求给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/jump...原创 2019-09-04 20:33:08 · 382 阅读 · 0 评论 -
LeetCode第46题思悟——全排列(permutations)
LeetCode第46题思悟——全排列(permutations)知识点预告少做无用功;Collections.swap API的使用;题目要求给定一个没有重复数字的序列,返回其所有可能的全排列。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/permutations著作权归领扣网络所有。商业转载请联系官方授权,非商业转载...原创 2019-09-05 22:32:24 · 223 阅读 · 0 评论 -
LeetCode第47题思悟—— 全排列 II(permutations-ii)
LeetCode第47题思悟—— 全排列 II(permutations-ii)知识点预告深度优先搜索;数据去重;题目要求给定一个可包含重复数字的序列,返回所有不重复的全排列。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/permutations-ii著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。...原创 2019-09-06 16:21:06 · 229 阅读 · 0 评论