leetcode总结
总结刷过的题,每一篇文章总结一类的题
rain_Man2018
求知若渴,虚心若愚
展开
-
leetcode The Maze I,II,III 详细总结
[LeetCode] 490. The Maze 迷宫一:题意链接:https://leetcode.com/articles/the-maze/给定一个二维平面表示一个迷宫,迷宫中0代表空闲处,1代表墙,有一个人从start处可以上下左右四个方向移动(得朝着一个方向一直走到头,碰到墙才能换方向),碰到墙得换方向移动,问是否停在目的地destination。经过目的地不算到达,球并不会停下来边界已经用墙封住了,图中显示出了!二:思路dfs是不行的,超时了!使用bfs来做1:首先从sta原创 2020-07-10 16:38:24 · 598 阅读 · 0 评论 -
美团面试算法题--LeetCode Basic Calculator I, II, III
224. Basic Calculator题意:实现基本计算器来计算表达式的值。表达式只有加减运算并且总是合法的字符串空格不影响计算有括号实现优先级数字都是正数样例Input: “(1+(4+5+2)-3)+(6+8)”Output: 23思路中缀表达式求值,当然用栈来实现227. Basic Calculator II772. Basic Calculator III(lock了,自己百度搜一下题就行)...原创 2020-07-07 22:48:46 · 556 阅读 · 0 评论 -
表达式求值--面试准备
241. Different Ways to Add Parentheses150. Evaluate Reverse Polish Notation中缀表达式转后缀表达式原创 2020-05-05 22:13:29 · 140 阅读 · 0 评论 -
面试题:连续子数组的最大和与循环列表中的子数组最大和
一:连续子数组的最大和LeetCode 53 Maximum Subarray题意:给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。定义dp[i]为前i个数中的连续子数组的最大和。状态转移方程为:d[i] = d[i-1]>=0 ? d[i-1]+nums[i] : nums[i] if not nums: return 0...原创 2020-04-11 22:15:39 · 1023 阅读 · 0 评论 -
leetcode 136. Single Number + 137. Single Number II + 260. Single Number III
136. Single Number题意:给定一个数组,只有一个数出现一次,其余数都出现两次,找出这个单独出现一次的数。解法一:数学方法,2*(a+b+c)-(a+a+b+b+c) = c解法二:位运算:a^a = 0 异或操作from collections import Counterclass Solution: def singleNumber(self, nums:...原创 2020-03-30 16:19:26 · 117 阅读 · 0 评论 -
Leetcode 54. Spiral Matrix and 59. Spiral Matrix II
一:Leetcode 54. Spiral MatrixGiven a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral order.方法一:python切片if not matrix: return []ret = []while matrix: ...原创 2020-03-23 23:28:02 · 114 阅读 · 1 评论 -
快速排序中的一次partition习题
一:lintCode 31. 数组划分题意:给出一个整数数组 nums 和一个整数 k。划分数组(即移动数组 nums 中的元素),使得:所有小于k的元素移到左边所有大于等于k的元素移到右边返回数组划分的位置,即数组中第一个位置 i,满足 nums[i] 大于等于 k。python实现:def partitionArray(self, nums, k): # writ...原创 2020-03-23 21:56:50 · 262 阅读 · 0 评论 -
Leetcode 450. Delete Node in a BST
一:题意:删除一颗二叉搜索树的一个节点。二:思路二叉搜索树的结点删除比插入较为复杂,总体来说,结点的删除可归结为三种情况:1、 如果结点z没有孩子节点,那么只需简单地将其删除,并修改父节点,用NIL来替换z;2、 如果结点z只有一个孩子,那么将这个孩子节点提升到z的位置,并修改z的父节点,用z的孩子替换z;3、 如果结点z有2个孩子,那么查找z的后继y,此外后继一定在z的右子树中,然...原创 2020-03-13 18:35:48 · 89 阅读 · 0 评论 -
leetcode 23. Merge k Sorted Lists
一:题意Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.python实现from Queue import PriorityQueueclass Solution(object): def mergeKLists(self, lists...原创 2020-03-13 16:27:24 · 100 阅读 · 0 评论 -
Leetcode 347. Top K Frequent Elements -- 桶排序
题意Given a non-empty array of integers, return the k most frequent elements.Input: nums = [1,1,1,2,2,3], k = 2Output: [1,2]python实现class Solution(object): def topKFrequent(self, nums, k): ...原创 2020-03-13 16:21:14 · 232 阅读 · 0 评论 -
排序(冒泡+选择+插入+快排+归并+堆排序)--python实现
一:LintCode 463 Sort Integers(用冒泡、选择、插入)给一组整数,按照升序排序,使用选择排序,冒泡排序,插入排序或者任何 O(n2) 的排序算法。class Solution: def sortIntegers(self, A): # write your code here# ----------简单的冒泡排序,还有双向冒泡---------...原创 2020-03-10 19:29:28 · 255 阅读 · 0 评论 -
非常详细和简洁的任意进制转换(python实现)
最近笔试面试也遇到这种进制转换的题,来总结一下!任意进制转换为10进制举例:二进制:1101转为十进制为:从最低位(从左到右)开始遍历,1 * 2^0 + 0 * 2^1 + 1 * 2^2 + 1 * 2^3 = 1 +0 + 4 + 8 = 13三进制:2101转为10进制为:1 * 3^0 + 0 * 3^1 + 1 * 3^2 + 2 * 3^3 = 1 + 0 + 9 + 54 = 64总结出规律,从低位到高位,每一位乘以权重,再相加,权重是进制的位数次方def anyToTen(原创 2020-06-14 17:26:06 · 4380 阅读 · 1 评论 -
leetcode 2-sum,3-sum,k-sum总结
百度面试问到这个,之前虽然做过,但是面试还是表现的不好,所以写下来总结一下。一:leetcode 1. Two Sum数组中找两数之和等于0;要求时间复杂度和空间复杂度都是O(N)使用哈希表来做!class Solution(object): def twoSum(self, nums, target): h = {} for i, num in e...原创 2020-04-30 20:57:00 · 262 阅读 · 0 评论 -
二叉树的先序+中序+后序的遍历非递归版本
先序遍历递归版本很简单,学习一下非递归的写法。先遍历根节点,再遍历左儿子,最后遍历右儿子def preOrder(root): # 返回先序遍历序列 if not root: return [] p = root res = [] stack = [] while stack or p: ...原创 2020-04-16 00:20:05 · 140 阅读 · 0 评论 -
归并排序的应用(统一的模板)--leetcode 493逆序对 + 315. Count of Smaller Numbers After Self
一:学习归并排序归并排序的核心思想是:自顶向下: 首先把一个大的无序数组不断划分成更小的数组,直到小数组的长度为1自底向上: 然后将两个小的有序数组合并成一个大的有序数组,最终整个数组有序python 代码实现:def merge(s1, s2): # 自底向上合并小数组变成一个大数组 news = [] # 合并到一个新数组中 i = j = 0 ...原创 2019-12-18 23:53:04 · 166 阅读 · 0 评论 -
区间的题(合并区间,区间相交等类型)
763. Partition Labels986. Interval List Intersections57. Insert Interval56. Merge Intervals原创 2019-12-18 20:26:39 · 313 阅读 · 0 评论 -
线段树(segment tree)
待更!刚好刷题刷到了LeetCode 307. Range Sum Query - Mutable这道题,我暴力一做就超时了,所以来学一下线段树来解题。记录一下学习的过程!leetcode上给了一篇文章来介绍:A Recursive approach to Segment Trees, Range Sum Queries & Lazy Propagation307. Range Su...原创 2019-12-02 19:16:56 · 133 阅读 · 0 评论 -
动态规划入门(习题非常详细)
待更221. Maximal Square1277. Count Square Submatrices with All Ones原创 2019-12-01 17:35:50 · 1551 阅读 · 0 评论 -
二分查找--按值搜索和按下标搜索总结
一:按下标搜索和按值搜索The key point for any binary search is to figure out the “Search Space”. For me, I think there are two kind of “Search Space” – index and range(the range from the smallest number to the b...原创 2019-11-16 23:29:47 · 491 阅读 · 0 评论 -
Top K 问题的最优解 - 快速选择算法(图解详细教程)
python实现快速选择算法(Quickselect)原创 2019-11-16 00:00:52 · 5748 阅读 · 2 评论 -
二叉树的最大深度和最小深度及应用在判断平衡二叉树上
python实现了求二叉树的最大深度和最小深度,简单明了!!!原创 2019-07-31 11:48:48 · 265 阅读 · 0 评论 -
镜像二叉树 + Invert Binary Tree + 对称二叉树
一:剑指offer:二叉树的镜像1.1 题意操作给定的二叉树,将其变换为源二叉树的镜像。1.2 思路这是道简单题,只需要把左右子树的值交换就行,先序遍历,自顶向下进行交换,也就是最左边节点与最右边节点交换值,其他也一样。这道题所给的树不需要改变二叉树的形态!1.3 python实现class Solution: # 返回镜像树的根节点 def Mirror(self...原创 2020-02-07 01:20:13 · 170 阅读 · 0 评论 -
重建二叉树---(先序+中序) and (中序+后序)
1:先序加中序输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。1.1 思路用数学归纳法的思想就是,假设最后一步,就是root的左右子树都已经重建好了,那么我只要考虑将root的左右子树安上去即可根据前序...原创 2020-02-05 16:38:11 · 286 阅读 · 0 评论 -
剑指Offer -- 二叉搜索树与双向链表
1. 题目描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。2. 解析首先我们得知道:二叉搜索树的中序遍历是有序的,单调递增!题意是将二叉搜索树转换成一个排序的双向链表,排序是从小到大排序,因此和中序遍历息息相关!3. 实现3.1 中序遍历非递归实现: def Convert(self, root): ...原创 2020-02-02 00:13:09 · 79 阅读 · 0 评论 -
编程计算组合数
问题组合数就是[C_n^m],是排列组合中非常重要的一部分,直接按照公式求阶乘会超过int,long的范围,因此在原创 2019-03-12 11:31:48 · 8850 阅读 · 0 评论 -
并查集(union find)总结
(一)概念并查集的基本概念见博客:https://www.cnblogs.com/xzxl/p/7226557.html(二)用途高效解决连接问题迷宫多节点的连接状态集合类的实现(三)通用模板三要素:需要记录每个结点的父结点找到每个结点的祖先结点将两个结点的祖先结点合并代码:public class Template { int[] pre; ...原创 2019-03-31 15:55:13 · 359 阅读 · 0 评论 -
动态规划中的零钱凑整问题总结
(一)概念给定一系列拥有不同面值的零钱,使用这些零钱凑出某个特定的面值。(二)简单示例给定面值分别为1,4,16,64的硬币,每种硬币有无限个,给定一个N,求组成N最少需要的硬币的数量,若无法组成则返回-1.python 伪代码如下:(三) 经典例题(1)01背包问题给定n件物品,第i件物品的价值为v[i],体积为w[i],现在我们拥有一个容量为V的背包。求能获得的最大价值。定...原创 2019-03-31 23:23:08 · 7138 阅读 · 0 评论 -
Path Sum (路径和)----(LeetCode112+LeetCode113+LeetCode437)
Leetcode 112 Path SumLeetcode 113 Path Sum IILeetcode 437 Path Sum III原创 2019-04-14 23:51:04 · 382 阅读 · 0 评论 -
二维数组的深度优先搜索总结以及模板
(一) LeetCode 200 Number of Islands(二) LeetCode 695. Max Area of Island(三)LeetCode 1020. Number of Enclaves(四)LeetCode 130. Surrounded Regions原创 2019-04-15 00:48:04 · 4424 阅读 · 1 评论 -
快速排序的递归与非递归两种实现(java和python实现)
一:性能快速排序是实际中最常用的一种排序算法,因为速度快,效率高而著名。就像名字一样,非常快速。时间复杂度最好是O(nlgn),最坏是O(n2),平均是O(nlgn)二:java代码实现public class QuickSort { public static void sort(int[] a, int low, int high) { if(low>=...原创 2019-05-11 22:37:29 · 239 阅读 · 0 评论 -
自动机解决股票买卖问题(Best Time to Buy and Sell Stock I II III IV等)详细教程
Best Time to Buy and Sell Stock系列问题在面试过程中经常遇到,这里将下面几种问题做一个总结。121 Best Time to Buy and Sell Stock122 Best Time to Buy and Sell Stock II123 Best Time to Buy and Sell Stock III188 Best Time to Buy an...原创 2019-05-27 10:51:32 · 346 阅读 · 2 评论 -
单调栈(Monotone stack)详细总结--leetcode习题java和python的实现
Leetcode 739. Daily TemperaturesLeetcode 496 Next Greater Element ILeetcode 503 Next Greater Element IILeetcode 1019 Next Greater Node In Linked ListLeetcode 556. Next Greater Element III原创 2019-05-17 22:34:32 · 623 阅读 · 0 评论 -
二叉树的层次遍历--leetcode习题总结
python实现二叉树的层次遍历,并使用两种写法,应用广泛!Leetcode上很多层次遍历的题都可以直接做了!!!102. Binary Tree Level Order Traversal429. N-ary Tree Level Order Traversal199. Binary Tree Right Side View103. Binary Tree Zigzag Level Order Traversal原创 2019-07-28 17:18:17 · 625 阅读 · 1 评论 -
二分查找总结与最佳实践(LeetCode 975 + LeetCode 878 + LeetCode 778 )
(一) 使用场景通常在有序的数字中,找到某个满足一定条件的数多次问询题需要多次遍历且数据量极大(二)基本流程确定边界(low, high)值确定边界移动条件,一定只写一边移动(low=mid high=mid-1) 或者 (low=mid+1 high=mid)循环外返回结果 (划重点)(三)简单例题给定一个有序数组nums和一个整数target,判断target是否存...原创 2019-03-11 17:53:35 · 430 阅读 · 0 评论