leetcode经典题 刷题题解 python版

1.判断数字是不是回文串(不能申请额外,也不能转为字符串)

例如:
121 :return True
1213: return False

方法;将整数分成左右两部分,右边那部分需要转置,然后判断这两部分是否相等。
在这里插入图片描述

2.统计二进制字符串中连续 1 和连续 0 数量相同的子字符串个数

Input: “00110011”
Output: 6
There are 6 substrings that : “0011”, “01”, “1100”, “10”, “0011”, and “01”

方法:
1.分组地数0或者1,比如说对于"0110001111",结果就是[1, 2, 3, 4]。
2.结果就是 1+2+3 = 6

在这里插入图片描述

3.判断是否是合法括号对

如 []:ture
[}:false
字典key和value分别存括号对,利用栈,若左括号就加入栈,右括号如果和栈顶是成对的,则两者抵消,如果栈空了,待加入的还是右括号,则false,如果最终栈都抵消掉了,true
在这里插入图片描述

4.链表排序 不申请额外空间

用归并排序,
在这里插入图片描述

5.二叉树的右视图(左视图类似)

给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。

示例:

输入: [1,2,3,null,5,null,4]
输出: [1, 3, 4]

思路:

先把二叉树的层序遍历搞定,然后把每一层最后一个加入到result里即可。
在这里插入图片描述

6.只能卖一次,买卖股票最大利润

不停找最小值,与此同时不停的找(当前价格-最小值)的最大
在这里插入图片描述

7.不限制买卖次数,最大利润

遇到增的 就加上差值,不停的买卖

8.只能买卖两次,求最大利润

在[1, 2, … n-1, n] 中可把两次交易分为[1, 2, … i] 和 [i, … n-1, n],这个分解过程是只能买卖一次中的思想,

接着分别计算[1, 2, … i] 和 [i, … n-1, n] 中的最大利润 f[i] 和 g[i],计算方法在121中得以体现

我们最后就是取出 max(f[i], g[i]) 就可以了。

在这里插入图片描述

9.求包含n个节点的二叉查找树的种类数

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值