LeetCode167--把二叉树转换成累加树(L538)、和为K的子数组(L560)

news/2024/11/17 6:23:14/

1、把二叉树转换成累加树

//给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点 node 的新值等于原树中大于或等于
// node.val 的值之和。
//
// 提醒一下,二叉搜索树满足下列约束条件:
//
//
// 节点的左子树仅包含键 小于 节点键的节点。
// 节点的右子树仅包含键 大于 节点键的节点。
// 左右子树也必须是二叉搜索树。
//
//
// 注意:本题和 1038: https://leetcode-cn.com/problems/binary-search-tree-to-greater-s
//um-tree/ 相同
//
//
//
// 示例 1:
//在这里插入图片描述

//
//
// 输入:[4,1,6,0,2,5,7,null,null,null,3,null,null,null,8]
//输出:[30,36,21,36,35,26,15,null,null,null,33,null,null,null,8]
//
//
// 示例 2:
//
// 输入:root = [0,null,1]
//输出:[1,null,1]
//
//
// 示例 3:
//
// 输入:root = [1,0,2]
//输出:[3,3,2]
//
//
// 示例 4:
//
// 输入:root = [3,2,4,1]
//输出:[7,9,4,10]
//
//
//
//
// 提示:
//
//
// 树中的节点数介于 0 和 104 之间。
// 每个节点的值介于 -104 和 104 之间。
// 树中的所有值 互不相同 。
// 给定的树为二叉搜索树。
//
// Related Topics 树 深度优先搜索 二叉搜索树 二叉树

采用反中序遍历的方式,因为右子树的数会影响到左子树的值,所以应该先遍历右边进行累加:

class Solution {int sum = 0;public TreeNode convertBST(TreeNode root) {TreeNode node = root;//反序中序遍历if(root != null){convertBST(root.right);sum += root.val;root.val = sum;convertBST(root.left);}return root;}
}

这样累加和最大的那个必定是二叉树的最左叶子节点

2、和为K的子数组

//给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数。
//
// 示例 1 :
//
//
//输入:nums = [1,1,1], k = 2
//输出: 2 , [1,1] 与 [1,1] 为两种不同的情况。
//
//
// 说明 :
//
//
// 数组的长度为 [1, 20,000]。
// 数组中元素的范围是 [-1000, 1000] ,且整数 k 的范围是 [-1e7, 1e7]。
//
// Related Topics 数组 哈希表 前缀和

这个题目需要注意,他是有负数的,所以不是很好搞,只能判断其前缀中是否有想用的数存在了,比如累加到num[i],累加和是7,最后需要和成2,最后就需要判断前边的数中是否有前缀和等于5的时候,前缀和为5出现几次就计数几次。

public int subarraySum(int[] nums, int k) {int count = 0;int pre = 0;HashMap<Integer, Integer> map = new HashMap<>();//以和为键,出现次数为值map.put(0, 1);for (int i = 0; i < nums.length; i++) {pre += nums[i];if(map.containsKey(pre-k)){count += map.get(pre-k);}map.put(pre,map.getOrDefault(pre,0)+1);}return count;}

http://www.ppmy.cn/news/131539.html

相关文章

L538. 把二叉搜索树转换为累加树

把二叉搜索树转换为累加树 给定一个二叉搜索树&#xff08;Binary Search Tree&#xff09;&#xff0c;把它转换成为累加树&#xff08;Greater Tree)&#xff0c;使得每个节点的值是原来的节点值加上所有大于它的节点值之和。 例如&#xff1a; 输入: 原始二叉搜索树: 5/ …

尼康Z5全画幅微单相机即将发布 主攻入门市场

本文来自太平洋电脑网 尼康在CP2019上的确认了一台&#xff0c;定位与佳能EOS RP系列相似的相机Z5&#xff0c;还会对标索尼A7m2&#xff0c;价格估计会在1000美元左右。 很多人都对尼康Z5的传感器抱有很大的期待&#xff0c;很多人都想要尼康Z6同款的2450万像素&#xff0c;我…

官方确认佳能下一代全画幅微单相机配备机身防抖

本文来自太平洋电脑网 用了佳能EOS R的摄影师都会有个想法&#xff0c;就是如果能搭载机身防抖就完美了。正所谓念念不忘&#xff0c;必有回响&#xff0c;各位心心念念的机身防抖被官方确定采用&#xff0c;会在下一代EOS R上出现。 这是来自佳能的一份内部计划&#xff0c;表…

只看参数 松下S1/S1R能否算是“最强微单”?

从M43画幅的G1发布&#xff0c;到全画幅S1/S1R正式发布&#xff0c;松下用了十年半的时间打怪升级&#xff0c;如今终于攒齐一身极品极品装备。经历了数次发布会后&#xff0c;昨天S1/S1R终于正式发布。从纸面参数看&#xff0c;这两台相机的性能相当不错&#xff0c;从图像拍摄…

html能控制佳能相机吗,佳能EOS R可选镜头多吗 是否支持佳能单反镜头

佳能EOS R是佳能发布的全新全画幅专业微单相机&#xff0c;全新EOS R采用了新的RF卡口&#xff0c;随之一同发布的有4枚新设计的RF卡口镜头&#xff0c;除此之外&#xff0c;EOS R还可通过镜头卡口适配器适配原有的EF卡口(含EF-S卡口)镜头&#xff0c;等于原有全线佳能单反EF镜…

我理解的单反,单电和微单间的区别

本人新手&#xff0c;未接触过单反&#xff0c;单电和微单&#xff0c;但是准备入手一只单反&#xff0c;结果发现现在科技已经日新月异&#xff0c;在原来的单反界已经有了很多的衍伸产品&#xff0c;单电和微单。 本文只是在我查阅的资料和个人理解的基础上做的一个总结&…

在线佳能计算机,佳能相机秒变电脑摄像头 高画质直播新玩法

原标题:佳能相机秒变电脑摄像头 高画质直播新玩法 出自蜂鸟网-器材,原文链接:https://m.fengniao.com/document/5362626.html 随着网络直播与在线视频会议的飞速发展,视频的画面品质变得越来越重要,而传统的直播,通常使用手机、电脑的前置摄像头,画质差,噪点感人,色彩…

佳能G系列领军相机G1X

在今年2月份&#xff0c;佳能推出的G系列相机的怪物旗舰机G1X&#xff0c;说它怪&#xff0c;就因为它采用了一块尺寸为18.714mm的CMOS&#xff0c;焦距换算倍数为1.85。之前的G系列都是采用小尺寸CMOS&#xff0c;最大的G12也就是1/1.7&#xff0c;这个成为G系列的一个瓶颈。G…