![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
leetcode
Edward.W
中二小码农,业界新手,善于学习
展开
-
【LeetCode系列】Leet Code OJ 945. 使数组唯一的最小增量 [Difficulty:Middle]
无意中翻起了LeetCode,发现有每日一题的做法,毕竟工作了一年之后就没怎么刷过题目了,好奇点进去看看,一个middle的题目,感觉实际上应该是easy的题目把。没有用IDE,直接手撸了一段比较长的代码。题目链接怎么说呢?解题思路等于没有思路吧,看了下数据量大小,实际上就是O(n)复杂度的模拟,没有认真地想怎么优化。以例子2来介绍,其中例子2中 【3,2,1,2,1,7】,可以直接使...原创 2020-03-22 15:27:14 · 155 阅读 · 0 评论 -
【LeetCode系列】Leet Code OJ 442. Find All Duplicates in an Array [Difficulty:Middle]
题目链接这个题目,如果可以用空间复杂度O(n)的话,就是直接哈希表或者桶排序,如果要求时间复杂度O(nlogn)的话,那就直接排序好了,比如快速排序,归并排序或者堆排序。但是,如果要求时间复杂度为O(n)又不创建任何空间的话,又该怎么办?这时候,仔细看题就会发现:Given an array of integers, 1 ≤ a[i] ≤ n (n = size of array)...原创 2018-08-01 22:53:57 · 135 阅读 · 0 评论 -
【LeetCode系列】Leet Code OJ 3. Longest Substring Without Repeating Characters [Difficulty:Middle]
题目链接这个题挺简单的,应该是要属于easy的等级。可能我的算法不够好吧首先定义一个起始指针start,然后用另一个指针p从头到尾扫描,将没遇到的字符加进hash表中,存放位置,如果遇到重复的字符,就修改start的起始位置,从重复的数值开始计算,这样得到最大的字串长度。class Solution: def lengthOfLongestSubstring(self, s)...原创 2018-08-01 22:12:09 · 136 阅读 · 0 评论 -
【LeetCode系列】Leet Code OJ 23. Merge k Sorted Lists [Difficulty:Hard]
题目链接一开始看到这个题目,也就只是个归并排序的扩展而已。但是想了一下,想法很简单,写起来却不一定那么简单,每次选取k个数里面最小的数插入,然后在继续,这样子倒是有点像Prim算法中间的流程,但是时间复杂度就是O(n^2)。于是想着怎么优化,如果要优化的话,最快也就优化成O(nlongn),那么这时候一个树的概念或者二分的概念就出来了。首先是树,大多数人说的是通过构造最小堆的方式进行选...原创 2018-07-27 14:51:57 · 168 阅读 · 0 评论 -
【LeetCode系列】Leet Code OJ 172. Factorial Trailing Zeroes [Difficulty: Easy]
题目链接看起来像是一个简单的题目,本来觉得遍历一遍n,把里面的带有5的倍数的统计一下就行了,但是题目要求是O(logN),这样的方法显然是不行的,想了想应该是只能用因子分解的方式:1. 首先要构成位数为0的话,那么必须乘以10, 10的话就分解为2*52. 在一个fanw范围内的偶数数量一定大于或等于5倍数的数那么,这时候只要统计这个阶乘中5的个数,Emmm...,怎么统计呢,比如...原创 2018-07-27 11:29:13 · 193 阅读 · 0 评论 -
【LeetCode系列】Leet Code OJ 73. Set Matrix Zeroes [Difficulty: Middle]
题目链接题目写的很清楚,就是带有0的那行,行和列都改为0,这时候比较尴尬的不是算法本身,而是空间复杂度和时间复杂度的限制。进阶:一个直接的解决方案是使用 O(mn) 的额外空间,但这并不是一个好的解决方案。 一个简单的改进方案是使用 O(m + n) 的额外空间,但这仍然不是最好的解决方案。 你能想出一个常数空间的解决方案吗?我觉得,最好根据后面的这三个方案来解决。如果忽略...原创 2018-07-27 11:06:07 · 134 阅读 · 0 评论 -
【LeetCode系列】Leet Code OJ 125. Valid Palindrome [Difficulty: Easy]
题目链接本来觉得是一个进栈出栈的问题,后来想想,反转一下就行了,这样也不用考虑奇数偶数。而且用Python来写感觉就像是作弊一样,直接有转换成大小写的方法了。class Solution: def isPalindrome(self, s): """ :type s: str :rtype: bool """ ...原创 2018-07-26 21:40:49 · 147 阅读 · 0 评论 -
【LeetCode系列】Leet Code OJ 88. Merge Sorted Array [Difficulty: Easy]
题目链接审题!审题!审题!重要的事情说三遍。 看到题目是不是觉得好像很熟悉的样子?然后一不小心就手撸了个归并排序?没错,我就是这样的。这题感觉应该算是一个插入排序,或者说把Nums2加入到Nums1的队尾然后进行排序。不过我既然已经把归并排序xiew写完了,那么肯定不会再用投机取巧的方法,算是给自己一个教训把:class Solution: def merge(se...原创 2018-07-26 21:28:35 · 143 阅读 · 0 评论 -
【LeetCode系列】 Leet Code OJ 70. Climbing Stairs [Difficulty: Easy]
斐波那契数列,而且是最简单版本的题目链接代码写的并不好,随便写了一下,时间复杂度为O(n),不过这个题,可以考虑一下用O(logN)的复杂度写一下,或者O(1),不过O(1)的话就有涉及一个精度问题了,有空再添加。class Solution: def climbStairs(self, n): """ :type n: int ...原创 2018-07-26 21:01:17 · 149 阅读 · 0 评论 -
【LeetCode系列】Leet Code OJ 28. Implement strStr() [Difficulty: Easy]
题目链接这题用PYTHON写感觉就是在作弊,没什么意义,先贴一个作弊方法:class Solution: def strStr(self, haystack, needle): """ :type haystack: str :type needle: str :rtype: int """ ...原创 2018-07-26 20:52:34 · 203 阅读 · 0 评论 -
【LeetCode系列】Leet Code OJ 20. Valid Parentheses [Difficulty: Easy]
很简单,就是一个栈的运用。遇到左括号进栈右括号出栈找匹配。最后结束的时候判断是否栈空,如果空就输出True,否则就输出False题目地址 class Solution: def isValid(self, s): """ :type s: str :rtype: bool """ left = [...原创 2018-07-26 20:19:35 · 129 阅读 · 0 评论 -
【LeetCode系列】Leet Code OJ 15. 3Sum [Difficulty: Medium]
这道题最原始的方法应该是三重循环,这样子就能够遍历出三个数了。但是这么看的话肯定会超时,我们可以看看,三个数的和是0,那么第三个数肯定是能够通过前两个数求出来的,因此,这样子就能够省去了一重循环,只要判定这个数存在,那么就可以用O(n^2)的时间复杂度做出来了。于是我写了下面的代码:s原本的想法是搜寻一个最小的,一个最大的,剩下的就是中间的。 def threeSum(self...原创 2018-07-26 20:06:17 · 156 阅读 · 0 评论 -
【LeetCode系列】Leet Code OJ 14. 最长公共前缀[Difficulty: Easy]
题目很简单,直接上链接和代码。题目链接分析:首先如果输入的大小为空,直接返回“”就行了。如果不为空,那肯定至少存在一个字符串,先让第一个字符串作为公共前缀,然后从第二个到最后一个开始进行分析,每个遍历,寻找公共的前缀。class Solution: def longestCommonPrefix(self, strs): """ :type s...原创 2018-07-26 17:22:54 · 166 阅读 · 0 评论 -
【LeetCode系列】Leet Code OJ 1. Two Sum [Difficulty: Easy]
一般来讲刷题网站的第一题应该是一个示例题,比如输入一个A,输入一个B,然后输出A+B,不过Leetcodeshan上面的题目不太一样,虽然这题很简单我倒也不是一次性就通过了。题目链接对题目进行分析时,我一开始想的比较简单,既然是第一题,肯定不会特别难,于是用了两重循环,后来发现Python代码无法通过,于是我又使用了Java和C++重写了一遍也不行。想想应该是算法的问题,于是将其优化为O(...原创 2018-07-26 16:38:23 · 179 阅读 · 0 评论 -
【LeetCode 系列】Leetcode OJ 8. String to Integer (atoi) [Difficulty: Easy]
由于开始准备找工作了,之前曾经花6天,每天刷11题的方式迅速刷完了牛客网的剑指OFFER66题,但是很快就忘记了,想想自己虽然菜,但是也可以刷刷Leetcode简单题吧,这篇算是第一篇把。题目链接这道题目看起来貌似不是很麻烦,但是实际上处理起来特别的麻烦,题意也没说清:情况1. 比如遇到“+-12” 两个符号都出现了。这种就凉了情况2. 比如遇到“-5-” 那么这时候应该输出...原创 2018-07-26 15:55:54 · 196 阅读 · 0 评论