![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode刷题日记
数学算法实验室
公众号:数学算法实验室
展开
-
LeetCode 检查树的平衡性
class Solution {public: bool isBalanced(TreeNode* root) { //递归检查树的平衡性 if(!root) return true; int dep1 = depth(root->left, 0); int dep2 = depth(root->right, 0); if(abs(dep1 - dep2) > 1) return false; ..原创 2020-05-25 14:01:38 · 195 阅读 · 0 评论 -
LeetCode 24.两两交换链表中的节点
LeetCode 24.两两交换链表中的节点题目描述思路求解这个题目看起来没有什么困难的(实际上也没有什么困难的2333),但是有一点也需要注意一下吧在进行节点交换的过程中,注意不要仅交换其中的两个节点,还有考虑前面的节点,不然即使交换了,前面的节点没有指向交换后的节点也无济于事详细的思路看代码吧代码求解class Solution: def swapPairs(self,...原创 2019-10-28 13:31:52 · 114 阅读 · 0 评论 -
LeetCode 101.对称二叉树
LeetCode 101.对称二叉树题目描述思路求解这个题目在LeetCode里面属于简单类型的题目(但是我做了挺久!)主要思路是广度优先搜索,不过要对其进行一点改进试想,我们先回忆一下二叉树的广度优先搜索算法。首先创建一个队列,将根节点加入进去,然后创建一个循环,只要队列不为空,我们的循环就一直进行。循环体内部:队列出一个元素,然后访问该元素,如果其存在左子节点,加入队列,如果其存...原创 2019-10-25 13:37:28 · 140 阅读 · 0 评论 -
LeetCode 264.丑数
LeetCode 264.丑数在做这个题目之前我们先自己造个轮子——实现一个堆维护堆的性质def max_heapify(A,i): left = 2*i+1 right = 2*i+2 max = i if left < len(A) and A[left]> A[i]: max = left if right < ...原创 2019-10-23 13:42:10 · 84 阅读 · 0 评论 -
LeetCode 240.搜索二维矩阵
LeetCode 240.搜索二维矩阵题目描述思路求解从右上角开始搜索,如果target大于当前值,则向下移动一步,小于当前值则向左移动一步。复杂度O(m+n)代码求解class Solution: def searchMatrix(self, matrix, target): """ :type matrix: List[List[int]]...原创 2019-10-19 23:14:58 · 143 阅读 · 0 评论 -
LeetCode 169.求众数
LeetCode 169.求众数题目描述思路求解1、第一种思路很简单,直接对数组中的元素进行排序。因为众数的个数超过了半数,所以我们取排好序的数组的中间的元素一定是众数2、第二种思路是将数组中的元素进行一一抵消,懵逼没关系,听我继续讲。首先我们选取数组中任意的两个元素,如果它们不等,则删去,相等则继续。直到数组中所剩的元素全是相同的,那么所剩元素一定是众数还是,因为众数的个数超过了...原创 2019-10-17 13:56:56 · 158 阅读 · 0 评论 -
LeetCode 122.买卖股票的最佳时机(二)
LeetCode 122.买卖股票的最佳时机(二)难度 :简单题目描述思路求解在这个规则之下,股票买卖的最大收益计算更为简单了我们只需要设置一个 profit 保存当前的收益;设置一个 Now 表示当前所持的股票遵循一个原则 :只要涨,咱就卖ps:当初曾幻想靠这个能成为百万富翁,啊哈哈哈哈代码求解class Solution: def maxProfit(self, p...原创 2019-10-15 14:12:28 · 128 阅读 · 0 评论 -
LeetCode 121.买卖股票的最佳时机(一)
LeetCode 121.买卖股票的最佳时机(一)难度:简单题目描述思路求解动态规划法求解,初始化一个表,保存每一天股票的涨跌,设为diff其中diff[i] 表示第 i 天的股票与第 i-1 天的股票差价初始化动态规划中保留子问题所用的表,设为dp其中,dp[i] = max( 0, dp[i-1] + diff[i] )然后记录最大的dp[i]解释一下上面的最优子结构公式啊...原创 2019-10-15 14:01:33 · 116 阅读 · 0 评论 -
LeetCode 53.最大子序列
LeetCode 53.最大子序列难度:简单题目描述思路求解又是一道动态规划的题目,初始化一个数组 P 用来保存子序列的当前子序列的最大连续子数组if p [i-1] > 0 : p[i] = p[i-1] + nums[i]else : p[i] nums[i]自顶而上,求出整个数组的最大子序列代码实现class Solution: def maxSubArra...原创 2019-10-14 23:07:59 · 99 阅读 · 0 评论 -
LeetCode 70.爬楼梯
LeetCode 70.爬楼梯难度 :简单题目描述思路求解这个题目可以用动态规划来做,第 i 阶可以由以下两种方法得到:在第(i−1) 阶后向上爬一阶或在第(i−2) 阶后向上爬两阶。所以到达第 ii 阶的方法总数就是到第 (i-1)(i−1) 阶和第 (i-2)(i−2) 阶的方法数之和。令 dp[i] 表示能到达第 i 阶的方法总数:代码实现class Solution:...原创 2019-10-14 13:30:54 · 121 阅读 · 0 评论 -
LeetCode 4.寻找两个有序数组的中位数
LeetCode 4.寻找两个有序数组的中位数题目难度 : 困难题目描述思路求解看到题目要求的复杂度是对数级,第一时间想到的是二分法,但是仔细看了一下题目感觉并不是很容易实现后来,我尝试 合并数组,重新排序,求中位数这种违规操作,竟然AC了。。。今天又回到了二分法,每次从两个数组某一个的首尾各去掉一个元素,知道两个数组的元素总数小于等于二,停止取平均看代码吧,主要是循环条件,没什么...原创 2019-10-14 00:20:45 · 154 阅读 · 0 评论 -
LeetCode 11.盛最多水的容器
LeetCode 11.盛最多水的容器难度:中等为何今天没有刷第十题,而是刷了第十一题呢?好吧,第十题我没做出来,另外下午有个考试,现在没办法拿太多时间想第十题,不过小伙伴们可以自己尝试一下哦。题目描述题目求解双指针法:从左右两边逼近,中间不断更新最大容量哈哈哈哈,今天写的好水,理解一下啦,复习去啦,不懂再问我代码实现class Solution: def maxAre...原创 2019-10-12 13:22:31 · 109 阅读 · 0 评论 -
LeetCode 9.回文数
LeetCode 9.回文数题目描述思路求解很基础的一个题,基本上会变成的人都能写出来,说两个思路吧小白解法 :先判断是否小于零,小于零则返回False大于0则将其转换成字符串比较字符串倒置和原字符串是否相同大白解法:判断是否小于0,或者是不是10的倍数设置half ,对x取余,然后x整除10,直到x<=half判断x是否等于half,或者half整除10是否等...原创 2019-10-11 13:10:24 · 119 阅读 · 0 评论 -
LeetCode 8.字符串转换整数
LeetCode 8.字符串转换整数题目描述思路求解没什么价值的一道题目求解方法大概就是分析里面的各种条件吧,几个判断就ok了当然有大佬用了正则匹配具体的看代码吧代码实现class Solution: def myAtoi(self, str: str) -> int: if str == "":return 0 strnum = ...原创 2019-10-10 13:38:51 · 98 阅读 · 0 评论 -
LeetCode 7.整数反转
LeetCode 7.整数反转题目描述思路求解这个题目较为简单,我的做法是先判断输入的数是否大于0,如果小于0,则取绝对值,然后再反转反转方法:将整数转换成字符串,对字符串反转,这个不用多说了吧,python反转个字符串超级简单的。这里有个坑,经过反转后的值可能会超过整型的范围,所以我们需要判断一下反转之后的值,如果溢出则返回0代码实现class Solution: def...原创 2019-10-09 13:57:53 · 114 阅读 · 0 评论 -
LeetCode 6.Z字符变换
LeetCode 6.Z字符变换题目描述题目分析对于这个题目,我们不必先急着写代码,先仔细分析一下这个Z字符Z字符可以分解成一个又一个的“Z”,但是这并不利于我们求解,仔细分析我们可以将Z字符再拆分,定义单位结构如下所示可以看到这个结构中,第一行和最后一行出现的字符数量为1,其余为2且该单位结构元素的数量为 2*行数-2程序设计思路设行数为NumRows初始化NumRows...原创 2019-10-08 14:16:08 · 133 阅读 · 0 评论 -
LeetCode 5.最长回文子串
LeetCode 5.最长回文子串题目描述:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。动态规划求解法动态规划法的思路是将问题分解成一个一个的小问题,然后进行求解来得到原问题的解,所以在示例字符串 “abba” 中,我们知道 “bb”这个子串是回文子串,那么我们只需要判断这个字串两边的一个字符就能判断一个更大的子串是否为回文子串。基于上面的思...原创 2019-10-07 23:47:02 · 142 阅读 · 0 评论