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上可用的每种资源 - 图像.视频 ...
随机推荐
- makefile自动编译
1.格式: 目标:依赖 规则 规则前有一个tab键 ,缺少tab键出错,使用空格替代也不可以 (1). 例子: 编写makefile 编译 main.c ,fun.c , fun.h test ...
- win10居然把Linux的引导覆盖了
昨天晚上装了个windows10系统试了试,发现触摸板真的难用.最基本的双指点击做右键都搞不出来,开始菜单里要上下滚动的时候触摸板竟然要水平滑动-- 重启的时候发现居然没有Linux的引导选项了 试了 ...
- CSIC_716_20191225【HTML基础入门】
HTTP协议 超文本传输协议HyperText Transfer Protocol 四大特性: 1.一次请求一次响应 2.基于TCP/IP协议,作用于应用层 3.无状态 4.无连接 数据格式: 1.请 ...
- vue全家桶(vue2.x+vue-router+axios+webpack)项目搭建
参考博客文章 博主FungLeo的Vue2+VueRouter2+Webpack+Axios 构建项目实战2017重制版 注:原博主写的非常详细 本文章为根据原博主教程总结的自己的搭建流程 一.安装n ...
- 统计所有小于非负整数 n 的质数的数量,埃拉托斯特尼筛法
素数的定义:质数又称素数.一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数. 1.暴力算法: 令i=2; 当i<n的时候,我们循环找出2-i的质数,即让i%(2~i-1), ...
- Nginx---配置系统(自己总结)
1.Nginx配置系统 Nginx的配置系统 由 一个主配置文件 和 其他一些辅助的配置文件 构成: 这些文件均为纯文本文件,全部位于nginx安装目录下的conf目录下: Nginx配置 ...
- css 垂直居中、水平居中
在父元素.子元素未知的情况下居中有两种方法: 第一种方法: .partent{ display:flex; justify-content:center; align-items:center; } ...
- push declined due to email privacy restrictions
使用git push到Github网站的时候提示: push declined due to email privacy restrictions 原因 在Github设置里有一个隐私选项 Block ...
- 揭秘阿里云EB级大数据计算引擎MaxCompute
日前,全球权威咨询与服务机构Forrester发布了<The Forrester WaveTM: Cloud Data Warehouse, Q4 2018>报告.这是Forrester ...
- javascript实现获取指定精度的上传文件的大小简单实例
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...