
Leetcode刷题笔记
Yexiaomola
https://github.com/yexiaomo
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Leetcode - 14. 最长公共前缀
Github地址 文章目录思路思路1: 横向扫描法思路2: 利用Python中zip函数和set思路3: 利用ASCII码编写思考与学习 思路 分析了一下题目 思路1: 横向扫描法 ①把第一个字符串暂时看做最长公共前缀 ②在第二个字符串看是否能找到当前最长公共前缀 ③如果不能找到,将最长公共前缀去掉最后一个,再进行②, ④直至匹配成功 ⑤再循环后面的每个元素,总能找到最长公共前缀,如果中间最长公...原创 2019-12-06 09:51:32 · 235 阅读 · 0 评论 -
Leetcode - 70. 爬楼梯
Github地址 文章目录思路编写思考与学习 思路 分析了一下题目 显然动态规划问题 当n>2时, 当你想要走到第n个台阶时,你需要先走到第n-1个或者第n-2个台阶 当你想要走到第n-1个台阶时,你需要先走到第n-2个或者第n-3个台阶 当你想要走到第n-2个台阶时,你需要先走到第n-3个或者第n-4个台阶 … 依次类推 分解至第1,2台阶时,就是分析的 底层问题 分析是从上至下,...原创 2019-10-27 11:10:02 · 321 阅读 · 0 评论 -
Leetcode - 46. 全排列
Github地址 文章目录思路编写思考与学习 思路 分析题目 数学上的组合问题, 感觉题很简单,对于我没接触过算法的人,无从下手 _ 发现这道题的标签是回溯, 然后查找了一些关于回溯问题的资料 初步对这道题有了思路, 就是个树形结构, 遍历每一条分支结构 利用递归求解(菜鸡的我只知道递归就是自己调用自己,要确定好递归结束条件) 思路: ①在纸上画出树形结构 ②确定递归参数 每次的参数都是当前字符...原创 2019-10-21 23:08:43 · 189 阅读 · 0 评论 -
Leetcode - 33. 搜索旋转排序数组
Github地址 文章目录思路编写思考与学习 思路 分析了一下题目, ①发现数组两端值是连续的 ②最大值,最小值在"中间"且相邻, ③对目标值,感觉本身的螺旋数组已经形成相对意义的折半查找 _ 思路: 对目标值与数组第一个进行判断 大继续进行,小则从末尾倒着比较 注意临界点, 目标值比最大值还大, 比最小值还小 编写 class Solution: def search(self, n...原创 2019-10-19 11:49:36 · 153 阅读 · 0 评论 -
Leetcode - 20. 有效的括号
Github地址 文章目录思路编写思考与学习 思路 第一眼看到括号匹配, 就想到了用栈来实现, 可能是考研时王道书上也是举的这样的例子 遇见左括号, 进栈, 遇见右括号, 出栈与之相比较, 匹配, 循环继续进行 不匹配, 直接GG 特殊值判断, 空字符 返回值判断, 栈是否为空 编写 class Solution: def isValid(self, s: str) -> ...原创 2019-10-15 13:49:21 · 217 阅读 · 0 评论 -
Leetcode - 9. 回文数
Github地址 文章目录思路编写思考与学习 思路 因为要判断整数是否为回文, 则去除正负号 字符串判断是否为回文字符串 编写 class Solution: def isPalindrome(self, x: int) -> bool: if(x == None or x<0): return False x = str(x) ...原创 2019-10-10 09:02:48 · 158 阅读 · 0 评论 -
Leetcode 8. 字符串转换整数 (atoi)
Github 文章目录思路 思路 首先去除空白字符 str.split() 在返回的数组中,查找到第一个为整数的元素原创 2019-10-10 08:34:26 · 256 阅读 · 0 评论 -
Leetcode - 4. 寻找两个有序数组的中位数
Github地址 文章目录思路编写思考与学习 思路 条件①两个数组都是有序②时间复杂度要求O(log(m+n)) 在一个有序数组中计算中位数很方便,但这是两个, 虽然是两个,但是有序,所以两个数组看成一个就行 老规矩,加上输入值判断 考虑有的数组为空,也就是len(nums) = 0 最后函数返回值为float 编写 思考与学习 ...原创 2019-10-06 11:13:14 · 203 阅读 · 0 评论 -
Leetcode - 2. 两数相加
Github地址 思路 因为整数是按照逆序存放在链表中,所以直接从头结点就可以开始相加 老规矩,加上输入值判断 两个数相加有可能产生进位, 所以下一个结点相加时需要考虑进位的1 当一个数加完,另外一个还有节点, 只加这一个结点 当最后两个结点都加完,但是进位还在 考虑完毕 动手 按照上面的思路,按照正常逻辑写出如下代码 # Definition for singly-linked list. ...原创 2019-10-05 22:15:42 · 291 阅读 · 0 评论 -
Leetcode - 7.整数翻转
题目地址 不知道什么叫整数溢出,看了别人的博客才知道, 就是运算过程中超出了实际32位有符号整数位最大的值和最小值 然后就复制了别人的这样一行代码 if( rlt>0x7fffffff || rlt<(signed int)0x80000000) return 0; 到了 1534236469 这个数就不行。debug发现原来是编译器在计算时发现溢出了自动重新设置了个数 发现这个数...原创 2018-12-30 20:06:28 · 220 阅读 · 0 评论 -
算法复杂度实验
O(n) 每当数据量增长一倍,时间增加一倍。证明略 证明如下: 2n / n = 2 O(logn) 每当数据量增长一倍,时间基本不增加。(滑稽) 证明如下: log2n\log{2n}log2n / logn\log{n}logn = logn2\log_n{2}logn2 + 1 并且从上面可以看出,$\log_n{2}$接近于0。所以log(n)级别的算法是非常优秀的算法。 O(n...原创 2019-01-22 17:11:52 · 2566 阅读 · 0 评论 -
一个关于字符串数组的时间复杂度问题
问题描述: 有一个字符串数组,将数组中的每一个字符串按照字母序排序后,再将整个字符串数组按照字典序排序。整个操作的时间复杂度为多少? 错误的解答 设数组长度为n,每个字符串按字母序排序为O(nlogn)一共为O(nnlogn),再将整个数组按字典序排序O(nlogn)。得出总的时间复杂度为O(nnlogn)+O(nlogn)=O(n^2logn) 没遇到此类问题的我感觉上面的解答没毛病啊,...原创 2019-01-09 17:24:24 · 1020 阅读 · 0 评论