leetcood学习笔记-437-路径总和③**
题目描述:
方法一:栈
class Solution(object):
def pathSum(self, root, sum):
"""
:type root: TreeNode
:type sum: int
:rtype: int
"""
count = 0
if root == None:
return count
stack = [(root,[root.val])]
while stack != []:
tree,number = stack.pop()
for i in number:
if i == sum:
count += 1
if tree.left:
stack.append((tree.left,[tree.left.val]+[_+tree.left.val for _ in number]))
if tree.right:
stack.append((tree.right,[tree.right.val]+[_+tree.right.val for _ in number]))
return count
方法二:
class Solution:
def pathSum(self, root, sum):
"""
:type root: TreeNode
:type sum: int
:rtype: int
"""
self.result = 0
self.sum = sum
current_sum_list = [] def current_sum(root, current_sum_list):
if root is not None:
for i in range(len(current_sum_list)):
current_sum_list[i] += root.val
if current_sum_list[i] == self.sum:
self.result += 1
current_sum_list.append(root.val)
if root.val == self.sum:
self.result += 1
# print(current_sum_list) current_sum(root.left, current_sum_list[:])
current_sum(root.right, current_sum_list[:]) current_sum(root, current_sum_list) return self.result
方法三:最快
class Solution(object):
def pathSum(self, root, sum):
from collections import defaultdict
lookup = defaultdict(int)
lookup[0] = 1
self.res = 0 def helper(root,curSum):
if not root:
return
curSum += root.val
self.res += lookup[curSum - sum]
lookup[curSum] += 1
helper(root.left,curSum)
helper(root.right,curSum)
lookup[curSum] -= 1
helper(root,0)
return self.res
leetcood学习笔记-437-路径总和③**的更多相关文章
- leetcood学习笔记-113-路径总和 II
题目描述: 参考后的提交: class Solution(object): def pathSum(self, root, sum): """ :type root: T ...
- leetcood学习笔记-112-路径总和
题目描述: 第一次提交: class Solution(object): def hasPathSum(self, root, sum): """ :type root: ...
- leetcood学习笔记-39-组合总和
题目描述: 方法一: class Solution: def combinationSum(self, candidates, target): """ :type ca ...
- 【LeetCode】437. 路径总和 III
437. 路径总和 III 给定一个二叉树,它的每个结点都存放着一个整数值. 找出路径和等于给定数值的路径总数. 路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点 ...
- Java实现 LeetCode 437 路径总和 III(三)
437. 路径总和 III 给定一个二叉树,它的每个结点都存放着一个整数值. 找出路径和等于给定数值的路径总数. 路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点 ...
- Leetcode 437.路径总和III
路径总和III 给定一个二叉树,它的每个结点都存放着一个整数值. 找出路径和等于给定数值的路径总数. 路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点). ...
- [LeetCode] 437. 路径总和 III ☆☆☆(递归)
路径总和 III 描述 给定一个二叉树,它的每个结点都存放着一个整数值. 找出路径和等于给定数值的路径总数. 路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子 ...
- leetcood学习笔记-257-二叉树的所有路径
题目描述: 第一次提交:参考113-路径总和② class Solution: def binaryTreePaths(self, root: TreeNode) -> List[str]: r ...
- Android学习笔记——文件路径(/mnt/sdcard/...)、Uri(content://media/external/...)学习
一.URI 通用资源标志符(Universal Resource Identifier, 简称"URI"). Uri代表要操作的数据,Android上可用的每种资源 - 图像.视频 ...
随机推荐
- 在Mac OS终端的Terminal 中使用Sublime Text3
查看环境变量: $ echo $PATH $ /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin 创建软链接: $ sudo ln -s /Application ...
- taro-安装及使用-npm
taro-安装及使用 https://nervjs.github.io/taro/docs/GETTING-STARTED.html 安装 Taro 项目基于 node,请确保已具备较新的 node ...
- session控制登入权限
<?php session_start(); if(empty($_SESSION["uid"]))//判断SESSION是不是为空 { header("locat ...
- 阿里云智能推荐AIRec产品介绍
一.智能推荐(AIRec)简介 AIRec背景介绍 智能推荐(简称AIRec)基于阿里巴巴集团领先的大数据和人工智能技术,结合阿里巴巴在电商.内容.新闻.视频直播和社交等多个行业领域的积累,为全球企业 ...
- NOIP模拟测试18(T3待更新)
T1: 直接模拟,详见代码注释. 复杂度$O(NM)$. Code: #include<iostream> #include<cstdio> #include<vecto ...
- docker安装(4)
centos6 docker安装 wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/repo/epel-6.repo yum install -y ...
- Linux文件大小 指令&编程
在工作和日常的编程中时常需要确定文件的大小,一些基本的查看方式在此做一个总结. 一. linux shell环境下 df可以查看一级文件夹大小.使用比例.档案系统及其挂入点,但对文件却无能为力. ...
- C++——变量
1.变量的初始化和赋值 初始化:创建变量时赋予一个初始值 赋值:把变量的当前值擦除,以新的值替代 2.变量的声明和定义 声明:名字为程序所知.如果一个程序要使用另一个程序的名字,则要包含对那个名字的声 ...
- 在Linux下安装PyEmu
git clone https://github.com/OpenRCE/pydbg.git git clone https://github.com/OpenRCE/paimei.git libda ...
- Rollei SL66 使用说明
根据记忆,并用不规范的语言描述我对sl66的使用心得:一.上卷1.用摇把顺时针转到12点位置,再退回3点位置:2.安插刀:3.后背上方按钮向右拨,打开后背:4.取出,装卷,再放入:5.转动后背上旋钮, ...