随笔分类 -  LeetCode

摘要:问题链接 "LeetCode 367. Valid Perfect Square" 题目解析 判断一个正数是否是完全平方数,不可使用sqrt函数。 解题思路 这是一道简单题,但是却挺有思考价值的。本题有很多种解法,思路各异,可以都看看。 无数种解法 解法一 数学里有一个概念叫做等差数列,完全平方数恰 阅读全文
posted @ 2018-05-17 23:17 AlvinZH 阅读(620) 评论(0) 推荐(0)
摘要:问题链接 "LeetCode 81. Search in Rotated Sorted Array II" 题目解析 给定一个“升序”的数组,从中寻找目标值。“升序”:旋转后的升序,例如 [4,5,1,2,3]。 时间限制:$O(lgN)$。 解题思路 本题与上一题 "LeetCode 33. Se 阅读全文
posted @ 2018-05-16 19:57 AlvinZH 阅读(466) 评论(0) 推荐(0)
摘要:问题链接 "LeetCode 33. Search in Rotated Sorted Array" 题目解析 给定一个 “升序” 的 无重复 数组,从中寻找目标值。“升序”:旋转后的升序,例如 [4,5,1,2,3]。 时间限制:$O(lgN)$。 解题思路 题目要求在 $O(lgN)$ 时间内找 阅读全文
posted @ 2018-05-16 19:41 AlvinZH 阅读(605) 评论(0) 推荐(1)
摘要:问题链接 "LeetCode 40. Combination Sum II" 题目解析 给一组数和一个目标值,求和为目标值的组合。数组中的每个数最多只能取一次。 解题思路 本题与上一题 "LeetCode 39. Combination Sum" 十分相似,改变的条件是: 数组中每个元素最多只能取一 阅读全文
posted @ 2018-04-25 20:27 AlvinZH 阅读(413) 评论(0) 推荐(0)
摘要:问题链接 "LeetCode 39. Combination Sum" 题目解析 给一组数和一个目标值,求和为目标值的组合。数组中的每个数可以取多次。 解题思路 像这种结果要求返回所有符合要求解的题,十有八九都是要利用到递归,而且解题的思路都大同小异,可以发现这些题目发现都是一个套路,都是需要另写一 阅读全文
posted @ 2018-04-25 19:19 AlvinZH 阅读(470) 评论(0) 推荐(0)
摘要:突然很想刷刷题,LeetCode是一个不错的选择,忽略了输入输出,更好的突出了算法,省去了不少时间。 dalao们发现了任何错误,或是代码无法通过,或是有更好的解法,或是有任何疑问和建议的话,可以在对应的随笔下面评论区留言,我会及时处理,在此谢过了。 过程或许会很漫长,也很痛苦,慢慢来吧。 | 编号 阅读全文
posted @ 2018-03-30 00:37 AlvinZH 阅读(3398) 评论(0) 推荐(0)
摘要:问题链接 "LeetCode 46. Permutations" 题目解析 求解一个无重复元素序列的全排列。 解题思路 什么是全排列?理解一下题意,简单来讲,就是求解序列中元素的所有排列方法,一共有A(n, n)=n!种排列。可以采用递归、非递归、插空等方法求解。 求解全排列参考链接: "数组的全排 阅读全文
posted @ 2018-03-30 00:36 AlvinZH 阅读(332) 评论(0) 推荐(0)
摘要:问题链接 "LeetCode 31. Next Permutation" 题目解析 求序列的下一个字典序列。 解题思路 什么是下一个字典序列?了解一下: "next_permutation(全排列算法)" 。算法的核心思想: 从序列尾部开始往前寻找两个相邻元素,设为( i, ii),即有 $\ i 阅读全文
posted @ 2018-03-29 22:50 AlvinZH 阅读(310) 评论(0) 推荐(0)
摘要:问题链接 "LeetCode 32. Longest Valid Parentheses" 题目解析 给出只包含左右括号的字符串,返回最长的括号匹配字符串长度。 解题思路 括号匹配问题一般借助 栈 ,便于理解。定义 $start$ 记录合法字符串的起始位置,遍历字符串: 当遇到左括号,则把其索引压入 阅读全文
posted @ 2018-03-29 20:06 AlvinZH 阅读(235) 评论(0) 推荐(0)
摘要:问题链接 "LeetCode 29. Divide Two Integers" Divide two integers without using multiplication, division and mod operator. If it is overflow, return MAX_INT 阅读全文
posted @ 2018-03-25 11:58 AlvinZH 阅读(1155) 评论(0) 推荐(0)
摘要:问题链接 "LeetCode 24. Swap Nodes in Pairs" 题目解析 给出链表,每两个节点之间交换顺序,求新的链表。 解题思路 其实不是很难,基本链表操作。直接迭代就好,注意一个问题,必须保留当前交换的两节点的前一节点指针,因为最后还得与之前链表连接上,所以最好的方法是保存前一节 阅读全文
posted @ 2018-03-23 15:47 AlvinZH 阅读(300) 评论(0) 推荐(0)
摘要:问题链接 "LeetCode 22. Generate Parentheses" 题目解析 括号匹配问题:给出数字n,求n对括号所有可能的匹配形式。 解题思路 明显使用递归的方法求解,最初的想法是利用两个变量 $left$和 $right$ 记录剩余可使用的左右括号数,当 $left right$ 阅读全文
posted @ 2018-03-23 14:45 AlvinZH 阅读(577) 评论(0) 推荐(0)
摘要:问题链接 "LeetCode 19. Remove Nth Node From End of List" 题目解析 给定链表,将倒数第n个元素删除后返回新的链表。 解题思路 这应该是一道简单题,不知道为什么是Medium。题目中已经给了提示,遍历一次!本题中由于不知道链表有多长,如果想知道的话需要遍 阅读全文
posted @ 2018-03-21 09:24 AlvinZH 阅读(698) 评论(0) 推荐(0)
摘要:问题链接 "LeetCode 18. 4Sum" 题目解析 给定n元素的数组,求出满足 $a+b+c+d = target$ 的所有元组。 解题思路 已经成为一个系列了,这道题是 "LeetCode 15. 3Sum" 的升级版,思路与其也是一模一样,外层再加一层循环。 先将数组排好序,便于检测重复 阅读全文
posted @ 2018-03-21 08:26 AlvinZH 阅读(253) 评论(0) 推荐(0)
摘要:问题链接 "LeetCode 17. Letter Combinations of a Phone Number" 题目解析 将数字串转化为字符串,其中每个数字对应相应的字母(手机按键对应),返回所有可能的字符串。 解题思路 简单暴力,直接循环迭代即可。首先建立对应数组 $NtoC$,遍历数字串,每 阅读全文
posted @ 2018-03-20 17:54 AlvinZH 阅读(214) 评论(0) 推荐(0)
摘要:问题链接 "LeetCode 16. 3Sum Closest" 题目解析 给定n个元素的数组和目标值,取三个元素使三数之和最接近目标值,求最接近目标值的三数之和。 解题思路 本题与 "LeetCode 15. 3Sum" ,思路一模一样,难度相差不大。 同样的,先将数组排序。固定最小数字,移动左右 阅读全文
posted @ 2018-03-20 17:15 AlvinZH 阅读(261) 评论(0) 推荐(0)
摘要:问题链接 "LeetCode 15. 3Sum" 题目解析 给定n个元素的数组,寻找符合 $a+b+c=0$ 的所有 {a, b, c}。 解题思路 如果对LeetCode的第一题 "Two Sum" 还有印象的话,会发现这道题很类似,不过题目要求的结果有明显区别,本题需要求出所有符合条件的结果。 阅读全文
posted @ 2018-03-19 15:26 AlvinZH 阅读(365) 评论(0) 推荐(0)
摘要:问题链接 "LeetCode 4. Median of Two Sorted Arrays" 题目解析 给定两个有序的数组,找到两个数组的中位数。 解题思路 虽然两个数组都是有序的,要找到其中位数确实有点麻烦,因为两个数组不能简简单单合并起来。 采用最暴力的方法,开一个新向量,把两个数组都放进去,重 阅读全文
posted @ 2018-03-18 23:43 AlvinZH 阅读(412) 评论(0) 推荐(0)
摘要:问题链接 "LeetCode 67. Add Binary" 题目解析 将两个二进制字符串相加。 解题思路 注意两个问题,一是进位问题,二是长度问题。这里采用一种巧妙的方法,使用add变量记录进位情况,每次从两个字符串中取出数字进行计算,若不存在数字则视为0,这样就不用考虑长度问题了。 注意最后还需 阅读全文
posted @ 2018-03-18 22:00 AlvinZH 阅读(285) 评论(0) 推荐(0)
摘要:问题链接 "LeetCode 66. Plus One" 题目解析 给出一个非负向量,代表一个数字,最高位在头,最低位在尾,返回其加一之后的数字向量。 解题思路 由于返回值要求是一个数字向量,那就没有必要把向量转化成真的数字来计算。一般情况下,从向量尾开始判断: 如果为9,那么进位,变为0,观察上一 阅读全文
posted @ 2018-03-18 21:02 AlvinZH 阅读(197) 评论(0) 推荐(0)