【LeetCode】HOT 100(22)

简介: 【LeetCode】HOT 100(22)

题单介绍:

精选 100 道力扣(LeetCode)上最热门的题目,适合初识算法与数据结构的新手和想要在短时间内高效提升的人,熟练掌握这 100 道题,你就已经具备了在代码世界通行的基本能力。


目录


题单介绍:


题目:538. 把二叉搜索树转换为累加树 - 力扣(Leetcode)


题目的接口:


解题思路:


代码:


过过过过啦!!!!


题目:494. 目标和 - 力扣(Leetcode)


题目的接口:


解题思路:


代码:


过过过过啦!!!!


写在最后:


题目:538. 把二叉搜索树转换为累加树 - 力扣(Leetcode)


题目的接口:

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
    int sum = 0;
    TreeNode* convertBST(TreeNode* root) {
    }
};

解题思路:

这道题并不难,


最难就难在读不懂题目是什么意思,读懂了就很好做了,


其实这道题目的关键点只有几个,


我把它们列出来:


1. 这是一个二叉搜索树


2. 累加树的性质:每个节点的值 = 所有比他大的节点的值 + 他本身的值


其实就是这两条性质,


而题目就是让我们把这一棵二叉搜索树转变成累加树。


所以我们只需要根据二叉搜索树的性质,从最大的节点开始搜索,


然依次累加值就行。


代码如下:


代码:

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
    int sum = 0;
    TreeNode* convertBST(TreeNode* root) {
        if(root == nullptr) return nullptr;
        convertBST(root->right);
        sum += root->val;
        root->val = sum;
        convertBST(root->left);
        return root;
    }
};

过过过过啦!!!!


题目:494. 目标和 - 力扣(Leetcode)


题目的接口:

class Solution {
public:
    int findTargetSumWays(vector& nums, int target) {
    }
};

解题思路:

这道题又是动态规划,


原本想用暴力枚举,好的失败了,有样例过不去


又是动态规划,可恶,


等我两周之后暑假了,有时间了,


马上去狂刷动态规划题目,把你拿下,


那现在我就简单用个搜索来写了,


搜索的逻辑比较简单,我就不解释了,


没有想到的是,我这段代码跑了一千多毫秒还给我过了。。。


代码如下:


代码:

class Solution {
public:
    int ans = 0;
    int findTargetSumWays(vector& nums, int target) {
        dfs(nums, target, 0, 0);
        return ans;
    }
private:   
    void dfs(const vector& nums, int target, int start, int sum) {
        if(sum == target && start == nums.size()) {
            ans++;
            return;
        }
        if(start >= nums.size()) return;
        dfs(nums, target, start + 1, sum + nums[start]);
        dfs(nums, target, start + 1, sum - nums[start]);
    }
};


过过过过啦!!!!


写在最后:

以上就是本篇文章的内容了,感谢你的阅读。


如果感到有所收获的话可以给博主点一个赞哦。


如果文章内容有遗漏或者错误的地方欢迎私信博主或者在评论区指出~


相关文章
|
缓存 NoSQL fastjson
Shiro Session集群共享存入Redis中SimpleSession的transient 属性不能序列化
Shiro Session集群共享存入Redis中SimpleSession的transient 属性不能序列化
403 0
|
XML 存储 数据处理
Python XML处理初级篇:入门lxml库
在数据处理过程中,XML(可扩展标记语言)常常被用作数据存储和传输。Python的lxml库是一个强大的库,用于解析XML和HTML文档。本文将向您介绍如何使用lxml库来解析和处理XML文档。
|
存储 中间件 数据处理
深入解读 Scrapy 框架原理与源码
深入解读 Scrapy 框架原理与源码
522 1
|
网络架构
为什么udp流设置1316字节
为什么udp流设置1316字节
346 0
|
弹性计算 Ubuntu 网络协议
现在你还不知道怎么使用宝塔面板嘛,下面带你从某里云购域名开始
现在你还不知道怎么使用宝塔面板嘛,下面带你从某里云购域名开始
|
存储 数据挖掘 Linux
服务器数据恢复—CentOS7操作系统服务器数据恢复案例
服务器数据恢复环境: 某品牌PowerEdge R730服务器+PowerVault MD3200存储,划分若干lun,操作系统版本是centos7,EXT4文件系统。 服务器故障&分析: 服务器在运行过程中自动关机且无法启动,服务器管理员对服务器进行修复后成功启动服务器,但服务器上原来的某个分区无法挂载。管理员将无法挂载的分区进行fsck修复&挂载,查看这个分区的数据发现部分文件丢失。
|
数据安全/隐私保护 UED
Mac下Transmit安装教程
Mac下Transmit安装教程
483 0
|
Web App开发 前端开发 JavaScript
如何利用ipad随时随地开发代码
如何利用ipad随时随地开发代码
739 1
如何利用ipad随时随地开发代码
|
存储 域名解析 安全
Nest 实现OSS 服务端签名直传并设置上传回调
Nest 实现OSS 服务端签名直传并设置上传回调
1013 0
|
安全 Java 数据安全/隐私保护
Spring框架核心功能介绍(一)
Spring框架核心功能介绍(一)
471 0