算法学习——LeetCode力扣补充篇14(179. 最大数、43. 字符串相乘、32. 最长有效括号、543. 二叉树的直径、113. 路径总和 II)

算法学习——LeetCode力扣补充篇14

在这里插入图片描述

179. 最大数

179. 最大数 - 力扣(LeetCode)

描述

给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。

注意:输出结果可能非常大,所以你需要返回一个字符串而不是整数。

示例

示例 1:

输入:nums = [10,2]
输出:“210”

示例 2:

输入:nums = [3,30,34,5,9]
输出:“9534330”

提示

1 <= nums.length <= 100
0 <= nums[i] <= 109

代码解析

class Solution {
public:static bool cmp( string &s1 , string &s2 ){string tmp1 , tmp2;tmp1 = s1 + s2;tmp2 = s2 + s1;return tmp1 > tmp2;}string largestNumber(vector<int>& nums) {vector<string> tmpStr;string result;for(int i=0 ; i<nums.size() ; i++){string tmp = to_string(nums[i]);tmpStr.push_back(tmp);}sort(tmpStr.begin() , tmpStr.end() , cmp);for(int i=0 ; i<tmpStr.size() ; i++){result += tmpStr[i];}if(result[0] == '0') return "0";return result;}
};

43. 字符串相乘

43. 字符串相乘 - 力扣(LeetCode)

描述

给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。

注意:不能使用任何内置的 BigInteger 库或直接将输入转换为整数。

示例

示例 1:

输入: num1 = “2”, num2 = “3”
输出: “6”

示例 2:

输入: num1 = “123”, num2 = “456”
输出: “56088”

提示

1 <= num1.length, num2.length <= 200
num1 和 num2 只能由数字组成。
num1 和 num2 都不包含任何前导零,除了数字0本身。

代码解析

class Solution {
public:string multiply(string num1, string num2) {if(num1 == "0" || num2 == "0") return "0";vector<vector<int>> tmp_nums; vector<int> path;int add = 0, num_0 = 0 , cur_num = 0;int max_bit = 0;for(int i=num1.size()-1 ; i>=0 ; i--){path.clear();add = 0;num_0 = num1.size()-1 - i;while(num_0--) path.push_back(0);for(int j=num2.size()-1 ; j>=0 ; j--){cur_num = (num1[i] - '0') * (num2[j] - '0')  + add;path.push_back(cur_num %10);add = cur_num/10;}if(add != 0 ) path.push_back(add);if(path.size() > max_bit) max_bit = path.size();tmp_nums.push_back(path);}string result;add = 0;for(int i=0 ; i<max_bit ; i++){cur_num = 0;for(int j=0 ; j<tmp_nums.size();j++){if(tmp_nums[j].size() > i){cur_num += tmp_nums[j][i];}}cur_num += add;result += (cur_num )%10 + '0';add = (cur_num )/10;}if(add != 0) result += add + '0'; reverse(result.begin() , result.end());return result;}
};

32. 最长有效括号

32. 最长有效括号 - 力扣(LeetCode)

描述

给你一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长有效(格式正确且连续)括号
子串
的长度。

示例

示例 1:

输入:s = “(()”
输出:2
解释:最长有效括号子串是 “()”

示例 2:

输入:s = “)()())”
输出:4
解释:最长有效括号子串是 “()()”

示例 3:

输入:s = “”
输出:0

提示

0 <= s.length <= 3 * 104
s[i] 为 ‘(’ 或 ‘)’

代码解析

class Solution {
public:int longestValidParentheses(string s) {int maxans = 0;stack<int> stk;stk.push(-1);       //栈底最后一个没有被匹配的右括号的下标for (int i = 0; i < s.length(); i++) {if (s[i] == '('){stk.push(i);}else if (s[i] == ')'){stk.pop();if (stk.empty()) stk.push(i);else maxans = max(maxans, i - stk.top());}}return maxans;}
};

543. 二叉树的直径

543. 二叉树的直径 - 力扣(LeetCode)

描述

给你一棵二叉树的根节点,返回该树的 直径 。

二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。

两节点之间路径的 长度 由它们之间边数表示。

示例

示例 1:

在这里插入图片描述

输入:root = [1,2,3,4,5]
输出:3
解释:3 ,取路径 [4,2,1,3] 或 [5,2,1,3] 的长度。

示例 2:

输入:root = [1,2]
输出:1

提示

树中节点数目在范围 [1, 104] 内
-100 <= Node.val <= 100

代码解析

/*** 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 result = 0;int track_back(TreeNode* cur ){if(cur == nullptr)  return 0;int left_hight = track_back(cur->left) ;int right_hight =  track_back(cur->right) ;result = max(result , left_hight + right_hight + 1);return  max(left_hight , right_hight ) + 1;}int diameterOfBinaryTree(TreeNode* root) {track_back(root);return result-1 ;}
};

113. 路径总和 II

113. 路径总和 II - 力扣(LeetCode)

描述

给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。

叶子节点 是指没有子节点的节点。

示例

示例 1:

在这里插入图片描述

输入:root = [5,4,8,11,null,13,4,7,2,null,null,5,1], targetSum = 22
输出:[[5,4,11,2],[5,8,4,5]]

示例 2:

在这里插入图片描述

输入:root = [1,2,3], targetSum = 5
输出:[]

示例 3:

输入:root = [1,2], targetSum = 0
输出:[]

提示

树中节点总数在范围 [0, 5000] 内
-1000 <= Node.val <= 1000
-1000 <= targetSum <= 1000

代码解析

/*** 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:vector<vector<int>> result;vector<int> path;int sum = 0;void track_back(TreeNode* cur , int &targetSum){if(cur == nullptr) return;path.push_back(cur->val);sum += cur->val;if( sum == targetSum && cur->left == nullptr && cur->right == nullptr){result.push_back(path);}track_back(cur->left , targetSum);track_back(cur->right , targetSum);sum -= cur->val;path.pop_back();return;}vector<vector<int>> pathSum(TreeNode* root, int targetSum) {track_back(root,targetSum);return result;}
};

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

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

相关文章

吴恩达2022机器学习专项课程(一) 第二周课程实验:特征缩放和学习率(多元)(Lab_03)

备注&#xff1a;笔者只对个人认为的重点代码做笔记&#xff0c;其它详细内容请参考吴恩达老师实验里的笔记。 1.多元特征的训练集 调用load_house_data()函数&#xff0c;将训练集数据保存到数组中。 X&#xff0c;y分别存储所有训练样本的前四列&#xff0c;所有训练样本的…

C# argb格式的raw文件转换为RGB文件

在C#中&#xff0c;如果你想将一个ARGB格式的raw文件转换为RGB格式的raw文件&#xff0c;你需要遍历原始数据&#xff0c;忽略Alpha通道&#xff08;透明度&#xff09;&#xff0c;并仅保留RGB值。 ARGB格式中每个像素占用32位&#xff08;8位Alpha&#xff0c;8位Red&#x…

python中的列表、元组、字典、集合(集合篇)

数据类型定义符号访问元素是否可变是否重复是否有序列表 [ ]索引可变可重复有序元组&#xff08;&#xff09;索引不可变可重复有序字典{key&#xff1a;value}键可变可重复无序集合{ }可变不可重复无序 基本概念 python语言中的集合是无序的、可变的容器类对象&#xff0c;所…

4.16作业

1.总结keil5下载代码和编译代码需要注意的事项 一、在编译代码时需要先点击魔术棒点击 修改flash Downlond 和pack 二、可以通过F12转跳到对应的函数中&#xff0c;查看函数的原型 三、注释出现乱码通过 Edit中的中的来修改 四、要先bulid在load 2.总结STM32Cubemx的使用方…

NLP学习(1)-搭建环境

前言 仅记录学习笔记&#xff0c;如有错误欢迎指正。 环境搭建 一、环境软件安装&#xff1a; 1、Anaconda安装&#xff08;一款可以同时创建和管理多个python环境的软件&#xff09; (1) 安装链接&#xff1a; https://blog.csdn.net/m0_61531676/article/details/126290…

最短路径算法(Dijkstra算法、Floyd-Warshall算法)

最短路径算法是解决图论中节点之间最短路径问题的经典算法。以下是两种常见的最短路径算法&#xff1a;Dijkstra算法和Floyd-Warshall算法。 Dijkstra算法 Dijkstra算法用于解决单源最短路径问题&#xff0c;即给定一个起点&#xff0c;找到起点到其他所有节点的最短路径。 …

【python】描述性统计计算偏斜度和峭度

文章目录 1.编写计算偏斜度和峭度的函数。并用自己编写的函数计算课本23页的习题1.5数据的偏斜度和峭度。2.从1.5数据中随机抽取2个容量为20的样本&#xff0c;分别计算它们的平均数和标准差3.请绘制给定数据的频率分布直方图&#xff0c;计算数据的均值、标准差、偏斜度和峭度…

【经典算法】 leetcode88.合并排序的数组(Java/C/Python3实现含注释说明,Easy)

作者主页&#xff1a; &#x1f517;进朱者赤的博客 精选专栏&#xff1a;&#x1f517;经典算法 作者简介&#xff1a;阿里非典型程序员一枚 &#xff0c;记录在大厂的打怪升级之路。 一起学习Java、大数据、数据结构算法&#xff08;公众号同名&#xff09; ❤️觉得文章还…

学习循环神经网络(RNN)

1. 掌握基础知识 理解RNN的基本概念&#xff1a;RNN是一种神经网络&#xff0c;它包含循环&#xff0c;使得网络能够维持一个内部状态&#xff0c;从而对序列的元素进行处理。学习RNN的工作机制&#xff1a;了解RNN是如何通过时间步迭代处理信息的&#xff0c;以及如何利用前一…

Ribbon 添加右侧区域菜单项

效果图如下所示&#xff1a; 类似与上图效果所示&#xff0c;代码如下&#xff1a; RibbonPage* pageHome1 ribbonBar()->addPage(tr("Home")); //实现代码&#xff1a; { QMenu* menuOptions ribbonBar()->addMenu(tr("Options"))…

古籍数字化平台:精校功能介绍

一、平台介绍 古籍数字化平台&#xff0c;本着公益性、低成本、合作共赢的三大原则&#xff0c;功能涵盖古籍OCR识别、族谱县志OCR识别、民国报纸OCR识别、图文逐字校对、数据著录、智能标点分段、精编排版、智能白话译文等&#xff0c;是一站式线上整理全流程平台。 平台集成…

C语言 【基础语法】

一、编程环境搭建 编译器&#xff1a;gcc 集成开发环境&#xff1a;vscode 1.1 安装vscode 1.2 设置中文包 插件 1.3 设置C/C扩展 安装 C/C Compile Run extension 和 C/C Extension Pack 扩展 二、基础语法 2.1 第一个c语言程序 2.2 数据类型 2.2.1 变量的语法(重点) …

Linux系统安装ansible

安装ansible yum install epel-release -y yum install ansible -y#检查是否安装成功 ansible --version检测ansible是否与其他机器连通 #需要先在/etc/ansible/hosts文件中进行配置 #并且需要配置免密登录#检测自己本机是否正常 ansible localhost -m ping #检测与主机host…

漏洞及漏洞管理

01 漏洞基础 原则上&#xff0c;漏洞是指系统或网络中的一个脆弱点&#xff0c;其可能会被网络犯罪分子利用&#xff0c;以获得未经 授权的访问&#xff0c;从而造成破坏。漏洞利用之后会发生什么呢&#xff0c;谁也说不准——安装恶意软件、 窃取敏感数据、利用恶意代码造成…

【QT进阶】Qt Web混合编程之QWebEngineView基本用法

往期回顾 【QT入门】Qt自定义控件与样式设计之自定义QTabWidget实现tab在左&#xff0c;文本水平的效果-CSDN博客【QT进阶】Qt Web混合编程之CEF、QCefView简单介绍-CSDN博客 【QT进阶】Qt Web混合编程之VS2019 CEF的编译与使用-CSDN博客 【QT进阶】Qt Web混合编程之QWebEngi…

qt 元对象系统及属性系统

Qt元对象系统(QMetaObject) Qt 的元对象系统叫 Meta-Object-System&#xff0c;提供了对象之间通信的信号与槽机制、运行时类型信息和动态属性系统。即使编译器不支持RTTI&#xff08;RTTI的实现耗费了很大的时间和存储空间&#xff0c;这就会降低程序的性能&#xff09;&…

URI和URL的区别?

URI&#xff08;Uniform Resource Identifier&#xff0c;统一资源标识符&#xff09;和URL&#xff08;Uniform Resource Locator&#xff0c;统一资源定位符&#xff09;都是网络上用来识别和定位资源的标准方式&#xff0c;但它们之间存在一些差异。 定义: URI 是一个用于…

MongoDB的安装使用

安装MongoDB&#xff08;基于docker安装&#xff09; docker run --restartalways -d --name mongo -v /opt/mongodb/data:/data/db -p 27017:27017 mongo:4.0.6MongoDB的客户端可以从这里下载&#xff08;可能会404&#xff09; https://www.mongodb.com/zh-cn/products/tool…

node.js-fs模块、path模块

fs模块-读写文件 模块&#xff1a;类似插件&#xff0c;封装了方法/属性 fs模块&#xff1a;封装了与本机文件系统进行交互的&#xff0c;方法/属性 语法&#xff1a; 1&#xff09;加载fs模块对象 const fsrequire(fs)//fs 是模块标识符&#xff1a;模块的名字 2&#x…

文献学习-38-用于增量组织病理学分类的内存高效提示调整

​ Memory-Efficient Prompt Tuning for Incremental Histopathology Classification Authors: Yu Zhu, Kang Li, Lequan Yu, Pheng-Ann Heng Source: The Thirty-Eighth AAAI Conference on Artificial Intelligence (AAAI-24) ​​ Abstract 最近的研究在组织病理学分类方面…