力扣打家劫舍python
时间: 2023-10-01 08:04:27 浏览: 59
引中的代码是关于力扣打家劫舍问题的解决方案。这个问题是一个关于二叉树的变种,需要使用后序遍历的迭代方法来解决。代码中的函数robback实现了后序遍历,它会递归地计算每个节点的最大金额,返回两个值:不包括当前节点金额的最大金额和包括当前节点金额的最大金额。最后,函数robback会返回根节点的最大金额。在代码的最后,函数rob会调用robback函数,并返回最大金额。
参考代码如下:
```python
class Solution:
def rob(self, root: TreeNode) -> int:
def robback(node):
if not node:
return 0, 0
ladd, lnotadd = robback(node.left)
radd, rnotadd = robback(node.right)
return lnotadd + rnotadd + node.val, max(ladd, lnotadd) + max(radd, rnotadd)
add, notadd = robback(root)
return max(add, notadd)
```
相关问题
力扣刷题python
好的,我明白了。关于力扣刷题Python,我可以给你一些建议和资源。
首先,建议你多刷一些简单难度的题目,逐渐提高难度。其次,可以参考一些优秀的题解和代码,学习别人的思路和实现方式。最后,多动手实践,不断练习。
以下是一些力扣刷题Python的资源推荐:
1. LeetCode官网:https://*** Python算法题解:https://github.com/apachecn/Python-Algorithms
4. Python数据结构与算法:https://github.com/practical-li/python-data-structure***3. 如何在Python中实现常见的数据结构?
力扣14 Python
力扣14题是一个经典的算法题目,题目名称为"最长公共前缀"。给定一个字符串数组,要求找出这些字符串的最长公共前缀。
解题思路如下:
1. 首先判断数组是否为空,如果为空则返回空字符串。
2. 初始化最长公共前缀为数组中的第一个字符串。
3. 遍历数组中的每个字符串,将其与最长公共前缀进行比较。
4. 如果当前字符串不以最长公共前缀开头,则将最长公共前缀缩短为当前字符串与最长公共前缀的公共部分。
5. 继续遍历数组中的其他字符串,重复步骤4,直到遍历完所有字符串或者最长公共前缀为空字符串。
6. 返回最长公共前缀作为结果。
以下是Python的实现代码:
```python
def longestCommonPrefix(strs):
if not strs:
return ""
prefix = strs[0]
for i in range(1, len(strs)):
while strs[i].find(prefix) != 0:
prefix = prefix[:-1]
if not prefix:
return ""
return prefix
```