leetcode经典题 刷题题解 python版

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

例如:
121 :return True
1213: return False

方法;将整数分成左右两部分,右边那部分需要转置,然后判断这两部分是否相等。
leetcode经典题 刷题题解 python版_第1张图片

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

leetcode经典题 刷题题解 python版_第2张图片

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

如 []:ture
[}:false
字典key和value分别存括号对,利用栈,若左括号就加入栈,右括号如果和栈顶是成对的,则两者抵消,如果栈空了,待加入的还是右括号,则false,如果最终栈都抵消掉了,true
leetcode经典题 刷题题解 python版_第3张图片

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

用归并排序,
leetcode经典题 刷题题解 python版_第4张图片

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

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

示例:

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

思路:

先把二叉树的层序遍历搞定,然后把每一层最后一个加入到result里即可。
leetcode经典题 刷题题解 python版_第5张图片

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]) 就可以了。

leetcode经典题 刷题题解 python版_第6张图片

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

leetcode经典题 刷题题解 python版_第7张图片

你可能感兴趣的:(算法题)