力扣题目训练(8)

news2024/11/23 15:43:43

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;
    }
};

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

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

相关文章

c入门第十篇——指针入门

一句话来说: 指针就是存储了内存地址值的变量。 在前面讨论传值和传址的时候&#xff0c;我们就已经开始使用了指针来传递地址。 在正式介绍指针之前&#xff0c;我们先来简单了解一下内存。内存可以简单的理解为一排连续的房子的街道&#xff0c;每个房子都有自己的地址&#…

中国电子学会2019年12月份青少年软件编程Scratch图形化等级考试试卷三级真题(选择题、判断题)

一、单选题(共 25 题&#xff0c;每题 2 分&#xff0c;共 50 分) 1.怎样修改图章的颜色&#xff1f;&#xff08; &#xff09; A. 只需要一个数字来设置颜色 B. 设置 RGB 的值 C. 在画笔中设置颜色、饱和度、亮度 D. 在外观中设置或修改角色颜色特效 2.以下程序的执…

数据分析入门指南:用 Python 开启数据之旅

文章目录 前言发现宝藏为什么选择 Python 进行数据分析&#xff1f;准备工作数据分析基础1. 数据加载2. 数据探索3. 数据清洗4. 数据可视化 探索更多可能性好书推荐总结 前言 为了巩固所学的知识&#xff0c;作者尝试着开始发布一些学习笔记类的博客&#xff0c;方便日后回顾。…

接口测试06 -- pytest接口自动化封装Loggin实战

1. 接口关键字封装 1.1 基本概念 接口关键字封装是指:将接口测试过程中常用的操作、验证封装成可复用的关键字(或称为函数、方法),以提高测试代码的可维护性和可复用性。 1.2 常见的接口关键字封装方式 1. 发送请求:封装一个函数,接受参数如请求方法、URL、请求头、请求…

【开源】SpringBoot框架开发天沐瑜伽馆管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 瑜伽课程模块2.3 课程预约模块2.4 系统公告模块2.5 课程评价模块2.6 瑜伽器械模块 三、系统设计3.1 实体类设计3.1.1 瑜伽课程3.1.2 瑜伽课程预约3.1.3 系统公告3.1.4 瑜伽课程评价 3.2 数据库设计3.2.…

【java基础题型】录入3位数,求每一位是?

\t 制表符&#xff0c;用于整到8个格子 Scanner类&#xff0c;导入Scanner包(1),代码里导入Scanner类写录入&#xff0c;调用录入的对象的方法 通用求个位数&#xff0c;%10即可&#xff0c;余数不会小于除数 package java录入3位数;import java.util.Scanner; …

Stable Diffusion 模型下载:RealCartoon-Realistic - V13

本文收录于《AI绘画从入门到精通》专栏,专栏总目录:点这里。 文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八案例九案例十

npm ERR! network This is a problem related to network connectivity.

问题详细描述 PS D:\ALearnBlog\shiyi-blog\blog-web> npm install -g vue/cli npm ERR! code ETIMEDOUT npm ERR! syscall connect npm ERR! errno ETIMEDOUT npm ERR! network request to https://registry.npmjs.org/vue%2fcli failed, reason: connect ETIMEDOUT 104.1…

1【算法】——最大子数组问题(maximum subarray)

一.问题描述 假如我们有一个数组&#xff0c;数组中的元素有正数和负数&#xff0c;如何在数组中找到一段连续的子数组&#xff0c;使得子数组各个元素之和最大。 二.问题分析 分治法求解&#xff1a; 初始状态&#xff1a; low0&#xff1b;highA.length-1&#xff1b;mid&am…

绞杀者模式

来自:https://martinfowler.com/bliki/StranglerFiqApplication.html 逐步用新的架构代理老的部分 绞杀着模式对于老久庞大,难以改造的遗留系统是比较适用的 总结: 老的不改,建新的新的搞完,杀老的

BUGKU-WEB 计算器

题目描述 计算正确即可得到flag&#xff0c;先看看场景&#xff1a; 解题思路 先输入正确答案&#xff0c;发现只能输入一位数那应该是设置了输入的最大长度是一所以需要我们把这个限制解除就行了呗 相关工具 F12大法 解题步骤 在场景界面按下F12,找到对应的标签右键进行…

【C语言】实现单链表

目录 &#xff08;一&#xff09;头文件 &#xff08;二&#xff09;功能实现 &#xff08;1&#xff09;打印单链表 &#xff08;2&#xff09;头插与头删 &#xff08;3&#xff09;尾插与尾删 &#xff08;4&#xff09; 删除指定位置节点 和 删除指定位置之后的节点 …

力扣(LeetCode)数据结构练习题

今天来分享两道力扣&#xff08;LeetCode&#xff09;的题目来巩固上篇时间复杂度和空间复杂度的知识&#xff0c;也就是在题目上加上了空间复杂度和时间复杂度的限制。 目录 给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素&#xff0c…

双场板功率GaN HEMT电容模型以精确模拟开关行为

标题&#xff1a;Capacitance Modeling in Dual Field-Plate Power GaN HEMT for Accurate Switching Behavior&#xff08;TED.16年&#xff09; 摘要 本文提出了一种基于表面电位的紧凑模型&#xff0c;用于模拟具有栅极和源极场板&#xff08;FP&#xff09;结构的AlGaN/G…

IDEA Ultimate下载(采用JetBrain学生认证)

IDEA Ultimate版本下载 Ulitmate是无限制版&#xff08;解锁所有插件&#xff0c;正版需要付费。学生可以免费申请许可&#xff09;Community是开源社区版本&#xff08;部分插件不提供使用&#xff0c;比如Tomcat插件。免费&#xff09; 我们将通过学生认证获取免费版。 Je…

Linux第50步_移植ST公司的linux内核第2步_编译ST公司的linux源码和修改网络驱动

1、修改“linux-5.4.31”目录下的“Makefile” 1)、使用VSCode打开“linux-5.4.31.code-workspace” 2)、点击“linux-5.4.31”目录下的“Makefile” 3)、点击“编辑”&#xff0c;点击“查找”&#xff0c;输入“CROSS_COMPILE回车”&#xff0c;找到“ARCH ? $(SUBARCH)”…

【Linux学习】线程详解

目录 十八.多线程 18.1 线程与进程 18.2 内核视角看待创建线程与进程 18.3 线程优缺点总结 线程的优点&#xff1a; 线程的缺点&#xff1a; 线程的用途&#xff1a; 18.4 线程与进程的联系 十九.线程控制 19.1 POSIX线程库 19.2 线程创建 19.3 线程等待 19.4 线程终止 19.5 线…

【后端高频面试题--Nginx篇】

&#x1f680; 作者 &#xff1a;“码上有前” &#x1f680; 文章简介 &#xff1a;后端高频面试题 &#x1f680; 欢迎小伙伴们 点赞&#x1f44d;、收藏⭐、留言&#x1f4ac; 后端高频面试题--Nginx篇 什么是Nginx&#xff1f;为什么要用Nginx&#xff1f;为什么Nginx性能…

揭秘:15条黄金法则,让你的GPT聊天提示效率翻倍!(一)

你的 ChatGPT 响应的好坏完全取决于你使用的ChatGPT 提示。 事实是&#xff0c;ChatgPT对于潜在客户开发、内容创建甚至外展都非常有效。 但大多数人只是使用人工智能来创建内容。 当然&#xff0c;它有时可以产生一些纯文本。也就是说&#xff0c;如果你只使用正确的提示。…

jsp课程教学管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 课程教学管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5.0…