LeetCode
变量命名好难啊
Master Candidate in FDU
展开
-
别再问我topk问题了
别再问我topk问题了215. 数组中的第K个最大元素在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素全局排序法快速排序,然后直接输出第k个最大的元素,时间复杂度O(nlogn)冒泡法如果k比较小,考虑用冒泡法class Solution: def findKthLargest(self, nu...原创 2020-04-12 21:21:24 · 382 阅读 · 0 评论 -
LeetCode刷题之路(一)
LeetCode1.两数之和(2019.2.17日)直接思路:暴力求解从list的两端开始遍历,一直遍历到两端指向同一个元素,如果遍历过程中找到了两个元素之和等于target,返回索引,没有则将首端的指针指向下一个元素。显然算法复杂度为O(n2)class Solution: def twoSum(self, nums, target): """ :t...原创 2019-02-22 13:40:00 · 613 阅读 · 0 评论 -
LeetCode刷题之路(二)
LeetCode20有效的括号算法思路:这道题就是一个栈就能解决,不多说,碰到’(’,’[’,’{’,入栈,遇到’)’,’]’,’}’。弹出栈顶的元素,匹配是否是一对,不是则结束输出无效。如果所有的输入完成,栈不为空,输出无效,其它情况都是有效的class Solution: def isValid(self, s: 'str') -> 'bool': if s ...原创 2019-02-27 16:28:03 · 178 阅读 · 0 评论 -
LeetCode刷题之路(三)
LeetCode35搜索插入位置算法思路:我认为这这道题就是考察二分查找法。常见的二分查找考察的方法有:给定一个有序的数组,查找target值是否在数组中给定一个有序数组,查找target第一次出现的下标(同样也有最后一个出现的下标)给定一个有序数组,查找最接近target且大于target的数的下标(最接近target且小于target的数的下标)这个链接有整理好关于二分查找算法...原创 2019-03-07 15:49:50 · 396 阅读 · 0 评论 -
LeetCode刷题之路(六)
这五道题全部都是和树的遍历有关系,也是非递归的二叉树遍历写法,有前中后序三种遍历,按层遍历。总结如下。LeetCode94二叉树的中序遍历算法思路:二叉树的前序遍历和中序遍历代码基本一致,不同的地方在于什么时候该访问父节点。非递归的写法主要是使用一个栈来保存已经访问过的结点,其实树的前中后序三种遍历就是深度优先搜索的变形。具体的来说,中序遍历一直将访问到的结点入栈,继续访问该结点的左子结点,...原创 2019-03-24 20:33:12 · 265 阅读 · 0 评论 -
leetcode刷题之路(四)
leetcode15三数之和算法思路:这道题我开始想到就是要固定一个数,然后要用双指针来做,但是两个指针的移动覆盖所有的数据,这样如何更新我没有想明白。这是道好题正确的解法应该是先将数组排序,遍历数组,固定一个数,再用双指针从这个数的右边开始遍历。如果将双指针从数组的起点和端点开始遍历,会得到很多重复的满足条件的组,因为考虑了重复的组别**。所以这里要能想到将双指针从这个数的右边开始遍历就会...原创 2019-03-13 10:55:44 · 218 阅读 · 0 评论 -
LeetCode刷题之路(五)
LeetCode33搜索旋转排序数组算法思路:这是一道好题。题目要求算法时间复杂度是O(logn)级别,那显然只能用二分查找了,关键在于二分查找算法只能用于有序的排列,而这道题给出的数组并不是有序的序列,在某个点上进行了旋转。那么我们应该怎么找到有序的子序列呢?我们只需要判断序列的第一个值和序列中间值的大小就可以判断。因为这是一个有序的序列的必要条件。具体的,先进行判断子序列是否是 有序子序...原创 2019-03-19 10:22:01 · 216 阅读 · 0 评论 -
leetcode458 可怜的小猪
leetcode458 可怜的小猪有 1000 只水桶,其中有且只有一桶装的含有毒药,其余装的都是水。它们从外观看起来都一样。如果小猪喝了毒药,它会在 15 分钟内死去。问题来了,如果需要你在一小时内,弄清楚哪只水桶含有毒药,你最少需要多少只猪?回答这个问题,并为下列的进阶问题编写一个通用算法。进阶:假设有 n 只水桶,猪饮水中毒后会在 m 分钟内死亡,你需要多少猪(x)就能在 p 分...原创 2019-08-25 12:49:47 · 649 阅读 · 0 评论