力扣题目训练(8)
2024年2月1日力扣题目训练
- 2024年2月1日力扣题目训练
- 404. 左叶子之和
- 405. 数字转换为十六进制数
- 409. 最长回文串
- 116. 填充每个节点的下一个右侧节点指针
- 120. 三角形最小路径和
- 60. 排列序列
2024年2月1日力扣题目训练
2024年2月1日第八天编程训练,今天主要是进行一些题训练,包括简单题3道、中等题2道和困难题1道。惰性太强现在才完成,不过之后我会认真完成的。
404. 左叶子之和
链接: 左叶子之和
难度: 简单
题目:

运行示例:

思路:
要求所有左叶子之和也就是通过遍历进行判断。
代码:
class Solution {
public:void preorder(TreeNode* root, int& res){if(root != NULL){if(root->left != NULL && root->left->left == NULL && root->left->right == NULL) res += root->left->val;preorder(root->left,res);preorder(root->right,res);}}int sumOfLeftLeaves(TreeNode* root) {int res = 0; preorder(root, res);return res;}
};
405. 数字转换为十六进制数
链接: 找不同
难度: 简单
题目:

运行示例:

思路:
这道题将给定的整数 转换为十六进制数,负整数使用补码运算方法。
在补码运算中,最高位表示符号位,符号位是 0 表示正整数和零,符号位是 1表示负整数。32位有符号整数的二进制数有 32 位,一位十六进制数对应四位二进制数,因此 32 位有符号整数的十六进制数有 8位。将 num 的二进制数按照四位一组分成 8组,依次将每一组转换为对应的十六进制数,即可得到 num的十六进制数。
假设二进制数的 8组从低位到高位依次是第 0组到第 7组,则对于第 i组,可以通过 (nums>>(4×i)) & 0xf得到该组的值,其取值范围是 0 到 15。
代码:
class Solution {
public:string toHex(int num) {if(num == 0) return "0";string res;for(int i = 7; i >= 0; i--){int val = (num >> (4 * i)) &0xf;if(res.size() > 0 || val > 0){char digit = val < 10 ?(char)('0'+val):(char)('a'+val-10);res += digit;}}return res;}
};
409. 最长回文串
链接: 最长回文串
难度: 简单
题目:

运行示例:

思路:
这道题本质就是计数看字母能不能组成回文数,若为偶数则可以,若为奇数则只有一个能组成,其余的需要减去1变为偶数才能构成回文数。
代码:
class Solution {
public:int longestPalindrome(string s) {bool flag = false;int ans = 0;unordered_map<char,int> temp;for(int i = 0; i < s.size(); i++){temp[s[i]]++;}for (auto p : temp){int value = p.second; if(value % 2 != 0){ans += value-1;if(flag == false){flag = true;ans++;} }else{ans += value;}}return ans;}
};
116. 填充每个节点的下一个右侧节点指针
链接: 填充节点
难度: 中等
题目:

运行示例:

思路:
这道题可以看出是使用层次遍历来完成,故利用队列完成。
代码:
class Solution {
public:Node* connect(Node* root) {if(root == NULL) return NULL;queue<Node*> Q;Q.push(root);while(!Q.empty()){int size = Q.size();for(int i = 0; i < size; i++){Node* curr = Q.front();Q.pop();if(i == size-1){curr->next = NULL;}else{curr->next = Q.front();}if(curr->left != NULL) Q.push(curr->left);if(curr->right != NULL) Q.push(curr->right);}}return root;}
};
120. 三角形最小路径和
链接: 路径和
难度: 中等
题目:

运行示例:

思路:
可以看出这个题是需要利用动态规划解决,f[i][j]=min(f[i−1][j−1],f[i−1][j])+c[i][j]
代码:
class Solution {
public:int minimumTotal(vector<vector<int>>& triangle) {int n = triangle.size();vector<vector<int>> temp(n,vector<int>(n));temp[0][0] = triangle[0][0];for(int i = 1; i < n; i++){temp[i][0] = temp[i-1][0]+triangle[i][0];for(int j = 1; j < i; j++){temp[i][j] = min(temp[i-1][j],temp[i-1][j-1]) + triangle[i][j];}temp[i][i] = temp[i-1][i-1] + triangle[i][i];}return *min_element(temp[n-1].begin(),temp[n-1].end());}
};
60. 排列序列
链接: 排列序列
难度: 困难
题目:

运行示例:

思路:
可以通过观察发现对于 n 个不同的元素(例如数 1,2,⋯ ,n),它们可以组成的排列总数目为 n!。
对于给定的 n 和 k,我们不妨从左往右确定第 k 个排列中的每一个位置上的元素到底是什么。
我们首先确定排列中的首个元素 a1。根据上述的结论,我们可以知道:
以 1为 a1的排列一共有 (n−1)! 个;
以 2为 a1的排列一共有 (n−1)!个;
⋯⋯
以 n 为 a1的排列一共有 (n−1)! 个。
由于我们需要求出从小到大的第 k个排列,因此:
如果 k≤(n−1)!,我们就可以确定排列的首个元素为 1;
如果 (n−1)!<k≤2⋅(n−1)!,我们就可以确定排列的首个元素为 2;
⋯⋯
如果 (n−1)⋅(n−1)!<k≤n⋅(n−1)!,我们就可以确定排列的首个元素为 n。
可以利用这个发现解决问题。
代码:
class Solution {
public:int total(int n){if (n == 0 || n == 1) { return 1; } else { return n * total(n - 1); } }string getPermutation(int n, int k) {string ans = "";vector<int> temp;for(int i = 0; i < n; i++){temp.push_back(i+1);}while(k != 1){int count = (k%total(n-1) == 0)? k/total(n-1) -1:k/total(n-1);int s = temp[count];temp.erase(temp.begin() + count); ans += to_string(s);k -= count* total(n-1);n = n-1;}for(int i =0 ; i < temp.size(); i++){ans += to_string(temp[i]);}return ans;}
};
相关文章:
力扣题目训练(8)
2024年2月1日力扣题目训练 2024年2月1日力扣题目训练404. 左叶子之和405. 数字转换为十六进制数409. 最长回文串116. 填充每个节点的下一个右侧节点指针120. 三角形最小路径和60. 排列序列 2024年2月1日力扣题目训练 2024年2月1日第八天编程训练,今天主要是进行一些…...
理解JAVA EE设计模式
理解JAVA EE设计模式 在Web应用程序的设计和开发阶段,开发人员在开发类似的项目时可能会遇到相似的问题。每名开发人员可能会遇到的问题找出不同或相似的解决方案。但是,这导致一些时间和精力浪费在为相似的问题寻找解决方案上。因此,要啊节省时间和精力,需要记录常见问题…...
GEE:梯度提升树(Gradient Boosting Tree)回归教程(样本点、特征添加、训练、精度、参数优化)
作者:CSDN @ _养乐多_ 对于分类问题,这个输出通常是一个类别标签 ,而对于回归问题,输出通常是一个连续的数值。回归可以应用于多种场景,包括预测土壤PH值、土壤有机碳、土壤水分、碳密度、生物量、气温、海冰厚度、不透水面积百分比、植被覆盖度等。 本文将介绍在Google…...
k8s-资源限制与监控 15
资源限制 上传实验所需镜像 Kubernetes采用request和limit两种限制类型来对资源进行分配。 request(资源需求):即运行Pod的节点必须满足运行Pod的最基本需求才能 运行Pod。 limit(资源限额):即运行Pod期间,可能内存使用量会增加࿰…...
【Ubuntu】在.bashrc文件中误设置环境变量补救方法
这里是vim也不在PATH中了,因为 解决方法就是在输入vim之后提示的vim路径下用vim打开该文件,然后改回来...
Imgui(1) | 基于imgui-SFML改进自由落体小球
Imgui(1) | 基于imgui-SFML改进自由落体小球 0. 简介 使用 SFML 做2D图形渲染的同时,还想添加一个按钮之类的 GUI Widget, 需要用 Dear Imgui。由于 Imgui 对于2D图形渲染并没有提供类似 SFML 的 API, 结合它们两个使用是一个比较好的方法, 找到了 imgui-SFML 这个…...
Linux-Vim的使用,快速入门Vim,Linux入门教程,精讲Linux
Vim的三种模式 输入模式,键入 i 或 a 或 o 都可以进入输入模式。 普通模式,打开Vim默认的模式。 命令模式,键入 : 进入命令模式。 注意:按下 ESC 可以从输入模式或命令模式退回到普通模式 退出 vim ,需要在普通模式下…...
目标检测 | 卷积神经网络(CNN)详细介绍及其原理详解
前言:Hello大家好,我是小哥谈。卷积神经网络(Convolutional Neural Network,CNN)是一种深度学习模型,主要用于图像识别和计算机视觉任务。它的设计灵感来自于生物学中视觉皮层的工作原理。CNN的核心思想是通…...
机器人学、机器视觉与控制 上机笔记(第一版译文版 2.1章节)
机器人学、机器视觉与控制 上机笔记(第一版译文版 2.1章节) 1、前言2、本篇内容3、代码记录3.1、新建se23.2、生成坐标系3.3、将T1表示的变换绘制3.4、完整绘制代码3.5、获取点*在坐标系1下的表示3.6、相对坐标获取完整代码 4、结语 1、前言 工作需要&a…...
关于vue2+antd 信息发布后台不足的地方
有的写法可以cv 1.序号递增 {title: "序号",customRender: (text, record, index) > ${index 1},align: "center",}, 2.关于类型 {title: "类型",dataIndex: "type",align: "center",customRender: function (t) {sw…...
Ubuntu+Anaconda 常用指令记录
Anaconda 使用指令记录 1 创建环境 conda create -n name pythonx.x(python版本自己指定)例如 conda create --name myenv: 创建名为"myenv"的新环境。 conda activate myenv: 激活名为"myenv"的环境。 conda deactivate: 退出当前环境。 2 删除环境 c…...
P5732 【深基5.习7】杨辉三角 python解法
# 【深基5.习7】杨辉三角 ## 题目描述 给出 n<20,输出杨辉三角的前 n 行。 如果你不知道什么是杨辉三角,可以观察样例找找规律。 ## 输入格式 ## 输出格式 ## 样例 #1 ### 样例输入 #1 6 ### 样例输出 #1 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5…...
VitePress-12-markdown中使用vue的语法
前言 VitePress 中,markdown文档最终都会转换成为 html文件,我们在访问的时候,也是直接访问的 xxx.html 文件。而且,markdown文档会被作为 [vue单文件] 进行处理,因此,我们我们可以在文档中使用 vue 语法&…...
“bound drug/molecule”or “unbound drug/molecule”、molecule shape、sketching是什么?
“bound drug/molecule”or “unbound drug/molecule” For clarity, the following terms will be used throughout this study: “bound drug/molecule” (or “unbound drug/molecule”) refers to the drug/molecule that is bound (or unbound) to proteins [48]. 意思就是…...
深入理解C语言中的函数指针:概念、机制及实战应用
在C语言的世界里,函数是一等公民,可以被赋值给变量,这种特殊的变量就是我们今天要探讨的主角——函数指针。函数指针作为C语言中一种强大的工具,允许我们以间接方式调用函数,从而实现动态绑定、回调函数、策略模式等多…...
《UE5_C++多人TPS完整教程》学习笔记1 ——《P2 关于本课程(About This Course)》
本文为B站系列教学视频 《UE5_C多人TPS完整教程》 —— 《P2 关于本课程(About This Course)》 的学习笔记,该系列教学视频为 Udemy 课程 《Unreal Engine 5 C Multiplayer Shooter》 的中文字幕翻译版,UP主(也是译者&…...
权限系统设计
权限系统设计 RBAC 基于角色的访问控制 ABAC 基于属性的访问控制 普通的系统无非 CRUD,那系统如何控制一个用户该看到哪些数据、能操作哪些功能?日常开发中最常用到 RBAC 和 OAuth2 这两种访问控制和授权方案 RBAC 基于角色的访问控制 所有的访问控制模…...
Ubuntu Desktop - Screenshot (截图工具)
Ubuntu Desktop - Screenshot [截图工具] 1. Search your computer -> Screenshot -> Lock to Launcher2. gnome-screenshot3. System Settings -> Keyboard -> ShortcutsReferences 1. Search your computer -> Screenshot -> Lock to Launcher 2. gnome-s…...
docker 1:介绍
docker 1:介绍 docker解决哪些问题: 传统APP在安装到不同电脑的时候可能会遇到依赖问题,比如缺少VS 20xx,软件无法运行”的情况。docker使用容器技术将软件 依赖打包为image包发布,解决了依赖问题。docker有一个官…...
RibbonBar RibbonPage切换事件
在开发的过程中,我们会用到点击切换page,来响应对应的事件,例如以下事件: 头文件中: void ribboncurrentPageIndexChanged(int index); 实现文件中: connect(ribbonBar(), SIGNAL(currentPageIndexChang…...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...
C++实现分布式网络通信框架RPC(3)--rpc调用端
目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...
Xshell远程连接Kali(默认 | 私钥)Note版
前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...
Linux云原生安全:零信任架构与机密计算
Linux云原生安全:零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言:云原生安全的范式革命 随着云原生技术的普及,安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测,到2025年,零信任架构将成为超…...
大模型多显卡多服务器并行计算方法与实践指南
一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...
JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作
一、上下文切换 即使单核CPU也可以进行多线程执行代码,CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短,所以CPU会不断地切换线程执行,从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...
JVM虚拟机:内存结构、垃圾回收、性能优化
1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...
tomcat入门
1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效,稳定,易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...
pycharm 设置环境出错
pycharm 设置环境出错 pycharm 新建项目,设置虚拟环境,出错 pycharm 出错 Cannot open Local Failed to start [powershell.exe, -NoExit, -ExecutionPolicy, Bypass, -File, C:\Program Files\JetBrains\PyCharm 2024.1.3\plugins\terminal\shell-int…...
区块链技术概述
区块链技术是一种去中心化、分布式账本技术,通过密码学、共识机制和智能合约等核心组件,实现数据不可篡改、透明可追溯的系统。 一、核心技术 1. 去中心化 特点:数据存储在网络中的多个节点(计算机),而非…...
