0x01_实验课leetcode

题目总结

lc1979

给你一个整数数组 nums ,返回数组中最大数和最小数的 最大公约数 。

两个数的 最大公约数 是能够被两个数整除的最大正整数。

会求 gcd 就行

class Solution {
public:int gcd(int a, int b){return b ? gcd(b, a % b) : a;}int findGCD(vector<int>& nums) {int mn = 2e9, mx = -2e9;for(auto x : nums){mn = min(mn, x);mx = max(mx, x);}return gcd(mn, mx);}
};

lcr024

给定单链表的头节点 head ,请反转链表,并返回反转后的链表的头节点。

  • sol1

将链表结点加入数组,生成一个新链表(不会之举)

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode() : val(0), next(nullptr) {}*     ListNode(int x) : val(x), next(nullptr) {}*     ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {
public:ListNode* reverseList(ListNode* head) {vector<int> nums;while(head != nullptr){nums.push_back(head -> val);head = head -> next;}int sz = nums.size();ListNode *p = new ListNode;p -> next = nullptr;for(auto x : nums){cout << x << ' ';ListNode *tmp = new ListNode(x);tmp -> next = p -> next;p -> next = tmp;}return p -> next;}
};
// 暴力写法 : 存下链表值, 重新生成链表
  • sol2

迭代处理,让当前节点指向左边的结点

class Solution {
public:ListNode* reverseList(ListNode* head) {ListNode *pre = nullptr;while(head != nullptr){ListNode *tmp = head -> next;head -> next = pre;pre = head;head = tmp;} return pre;}
};
  • sol3

递归处理, dfs 一路搜到尾结点指向的 nullptr ,返回尾结点,一路回溯过程中,令每个结点都指向 pre 结点,最后返回从一路回溯上来的尾结点

class Solution {
public:ListNode* dfs(ListNode* now, ListNode* pre){if(now == nullptr) return pre; // 一路递归返回头结点ListNode* res = dfs(now -> next, now);now -> next = pre;return res;}ListNode* reverseList(ListNode* head) {return dfs(head, nullptr);}};

汉诺塔问题

在经典汉诺塔问题中,有 3 根柱子及 N 个不同大小的穿孔圆盘,盘子可以滑入任意一根柱子。一开始,所有盘子自上而下按升序依次套在第一根柱子上(即每一个盘子只能放在更大的盘子上面)。移动圆盘时受到以下限制:
(1) 每次只能移动一个盘子;
(2) 盘子只能从柱子顶端滑出移到下一根柱子;
(3) 盘子只能叠在比它大的盘子上。

请编写程序,用栈将所有盘子从第一根柱子移到最后一根柱子。

你需要原地修改栈。

处理 n n n 个盘子,递归为处理 n − 1 n-1 n1 个盘子

class Solution {
public:// 把 n 个盘子从 A 移动到 C 借助 Bvoid op(int n, vector<int> &A, vector<int> &B, vector<int> &C){if(n == 1){ // 递归终止C.push_back(A.back());A.pop_back();return ;}op(n - 1, A, C, B);C.push_back(A.back());A.pop_back();op(n - 1, B, A, C);}void hanota(vector<int>& A, vector<int>& B, vector<int>& C) { // 表示从 A 移动到 C, 借助 Bop(A.size(), A, B, C);}
};

翻转二叉树

给定一棵二叉树的根节点 root,请左右翻转这棵二叉树,并返回其根节点。

递归处理,将原二叉树左子树作为新二叉树右子树,将原二叉树右子树作为新二叉树左子树;

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

lcr051

路径 被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。

路径和 是路径中各节点值的总和。

给定一个二叉树的根节点 root ,返回其 最大路径和,即所有路径上节点值之和的最大值。

一道比较好写的树形 dp

/*** 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) {}* };*/// dp[u] 表示以 u 为根节点的子树且选择 u 作为路径的一个结点所能得到的最大路径点// 更新dp : dp[u] = w[u] + max(dp[lson], dp[rson], 0);// 更新答案 : ans = max(ans, w[u] + max(dp[lson], 0) + max(dp[rson], 0));
class Solution {
public:int ans = - 2e9;map<TreeNode*, int> dp;void dfs(TreeNode* r){if(r == nullptr) return ;dp[r] = r -> val;dfs(r -> left);dfs(r -> right);dp[r] += max({dp[r -> left], dp[r -> right], 0});ans = max(ans, r -> val + max(0, dp[r -> left]) + max(0, dp[r -> right])); }int maxPathSum(TreeNode* root) {dfs(root);return ans;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/762992.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

29-中断管理

中断管理 什么是中断管理&#xff1f; 用户可以自定义配置系统可管理的最高中断优先级的宏定义configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY&#xff08;高四位有效&#xff09;&#xff0c;它是用于配置内核中的basepri 寄存器的&#xff0c;当 basepri 设置为某个值的时候…

【sql】初识 where EXISTS

文章目录 概述1. select 简单示例2. update和DELETE参考 相关文章&#xff1a; 【sql】深入理解 mysql的EXISTS 语法 【sql】初识 where EXISTS 概述 where EXISTS &#xff08;子查询&#xff09;多对多中通过中间表查对方列表 1. select 简单示例 用户表A&#xff0c;小组…

hive语法树分析,判断 sql语句中有没有select *

pom依赖参考以下博文java 通过 IMetaStoreClient 取 hive 元数据信息-CSDN博客1 节点处理器类 import lombok.Getter; import org.apache.hadoop.hive.ql.lib.Dispatcher; import org.apache.hadoop.hive.ql.lib.Node; import org.apache.hadoop.hive.ql.parse.ASTNode; impor…

org.springframework.boot:type=Admin,name=SpringApplication异常

javax.management.InstanceNotFoundException: org.springframework.boot:typeAdmin,nameSpringApplication 问题描述&#xff1a; IDEA 新建 SpringBoot 项目&#xff0c;启动时后台报错&#xff1a; javax.management.InstanceNotFoundException: org.springframework.boot…

windows搭建Elasticsearch环境

windows搭建Elasticsearch环境 本章搭建Elasticsearch ik分词器插件 kibana三个环境.三个版本都是7.8.0 1.安装Elasticsearch 安装网址: https://www.elastic.co/cn/downloads/past-releases#elasticsearch 下载解压后直接进入bin目录&#xff0c;双击运行elasticsearch.…

基于springboot的牙科就诊管理系统

技术&#xff1a;springbootmysqlvue 一、系统背景 当前社会各行业领域竞争压力非常大&#xff0c;随着当前时代的信息化&#xff0c;科学化发展&#xff0c;让社会各行业领域都争相使用新的信息技术&#xff0c;对行业内的各种相关数据进行科学化&#xff0c;规范化管理。这样…

粤嵌6818开发板如何理解Linux文件IO?

一、文件IO的概述 1、什么是文件&#xff1f; Linux下一切皆文件。普通文件、目录文件、管道文件、套接字文件、链接文件、字符设备文件、块设备文件。 2、什么是IO&#xff1f; input output&#xff1a;输入输出 3、什么是文件IO&#xff1f; 对文件的输入输出&#xff0c;把…

轻松找回丢失数据EasyRecovery数据恢复软件让你无后顾之忧

轻松找回丢失数据&#xff0c;EasyRecovery数据恢复软件让你无后顾之忧&#xff0c;电脑数码行业必备工具&#xff0c;让你的数据安全有保障 &#xff01; 一、EasyRecovery数据恢复软件简介 在我们的日常生活中&#xff0c;无论是工作还是学习&#xff0c;都离不开电脑和数据…

Terraform实战(四)-资源打标签

1 腾讯云 1.1 tf配置 标签&#xff08;Tag&#xff09;是腾讯云提供的云资源管理工具&#xff0c;以键值对 key:values 的形式存在&#xff0c;用于关联您的大多数云资源&#xff0c;对于资源的分类、搜索和聚合十分有用。 在 Terraform 中&#xff0c;通过 Map 来定义一个资…

Linux/Perfection

Enumeration nmap 用 nmap 扫描了常见的端口&#xff0c;发现对外开放了 22,80&#xff0c;扫描一下详细信息&#xff0c;如下所示 ┌──(kali㉿kali)-[~/vegetable/HTB/Perfection] └─$ nmap -sC -sV -p 22,80 10.10.11.253 -oA nmap Starting Nmap 7.93 ( https://nmap…

目标检测——DOTA航拍数据集

DOTA数据集是一个用于航空图像中目标检测的大规模数据集&#xff0c;旨在帮助研究人员开发和评估航空图像中的目标检测算法。该数据集具有广泛的应用价值&#xff0c;尤其在计算机视觉和遥感技术领域。 DOTA数据集的特点主要体现在以下几个方面&#xff1a;首先&#xff0c;其…

科研文献阅读方法

阅读科研文献是科研工作者的重要工作之一&#xff0c;以下是一些阅读科研文献的方法&#xff1a; 确定阅读目的&#xff1a;在阅读科研文献之前&#xff0c;确定你的阅读目的&#xff0c;是为了了解某一领域的最新进展&#xff0c;还是为了找到支持自己研究的理论和实证依据。…

408学习笔记-14-C-数据在内存中的存储

1、整数型存储 整数型存储就是所有整型家族里的数据类型的存储方式&#xff0c;也就是说包含了字符类型的存储&#xff08;因为字符的操作符的返回值是ASCII码值&#xff0c;故实际上存储的是整数&#xff09;。 1.1、有符号整数 有符号整数包含char&#xff0c;short&#x…

如何做接口测试?

今天来聊聊接口测试&#xff0c;现在是2024年了&#xff0c;打开招聘网站随便点开一个招聘帖子&#xff0c;几乎都可以看到岗位JD要求写着有接口测试经验优先。其重要性可见一斑&#xff01; 目前&#xff0c;凡是好一点稍具规模的公司哪怕是大厂外包也几乎都要求会接口测试&a…

解决mysql连接数据太多,“Too many connections“ 解决办法

解决mysql连接数据太多,"Too many connections" 解决办法 mysql出现Too many connections提示一般原因就是你网站连接数超过了你msyql配置的连接数据了,解决办法就是修改一下mysql配置文件中的max_connections参数或修改你程序连接直接及时处理.。 先搞清楚MySQL的…

一、typescript基础数据类型

1&#xff0c;布尔 let isDone:boolean false;2, 数字&#xff0c; 所有数字都是浮点数 let n:number 1;3,字符串 let name:string "mily", sex:string 女;4.数组 let arr1:number[] [1, 2, 3] let arr2:Array<number> [1, 2, 3]5,元祖&#xff0c; …

QT(6.5) cmake构建C++编程,调用python

一、注意事项 explicit c中&#xff0c;一个参数的构造函数(或者除了第一个参数外其余参数都有默认值的多参构造函数)&#xff0c;承担了两个角色&#xff0c;构造器、类型转换操作符&#xff0c; c提供关键字explicit&#xff0c;阻止转换构造函数进行的隐式转换的发生&#…

使用Docker搭建YesPlayMusic网易云音乐播放器并发布至公网访问

目录 ⛳️推荐 1. 安装Docker 2. 本地安装部署YesPlayMusic 3. 部署公有云YesPlayMusic播放器 3.1 安装cpolar内网穿透 3.2 固定YesPlayMusic公网地址 ⛳️推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一…

【区间、栈】算法例题

目录 六、区间 48. 汇总区间 ① 49. 合并区间 ② 50. 插入区间 ② 51. 用最少数量的箭引爆气球 ② 七、栈 52. 有效的括号 ① 53. 简化路径 ② 54. 最小栈 ② 55. 逆波兰表达式求值 ② √- 56. 基本计算器 ③ 六、区间 48. 汇总区间 ① 给定一个 无重复元素 的 …

C# WPF编程-XAML

C# WPF编程-XAML XAML简述XAML子集XAML编译XAML基础XAML名称空间XAML中的属性和事件属性事件使用其他名称空间中的类型 加载和编译XAML XAML简述 XAML(Extensible Application Markup Language的简写&#xff0c;发音"zammel")是用于实例化.NET对象的标记语言。XAML…