【每日刷题】Day129

【每日刷题】Day129

🥕个人主页:开敲🍉

🔥所属专栏:每日刷题🍍

🌼文章目录🌼

1. 105. 从前序与中序遍历序列构造二叉树 - 力扣(LeetCode)

2. LCR 154. 复杂链表的复制 - 力扣(LeetCode)

3. 单词识别_牛客题霸_牛客网 (nowcoder.com)

1. 105. 从前序与中序遍历序列构造二叉树 - 力扣(LeetCode)

//思路:前序遍历

//本题的核心还是前序遍历创建,但是在创建时,还是根据中序遍历的结果来创建

class Solution {

public:


//sub用来遍历 preorder(前序),left、right 构成区间

    TreeNode* _buildTree(vector<int>& preorder, vector<int>& inorder,int& sub,int left,int right)

    {

        if(left>right) return nullptr;//没有区间,返回nullptr

        TreeNode* root = new TreeNode(preorder[sub]);//根据前序构造根

        int flag = left;//去中序中寻找当前根

        while(inorder[flag]!=preorder[sub]) flag++;

        sub++;

        root->left = _buildTree(preorder,inorder,sub,left,flag-1);//当前根链接左右构造好的子树

        root->right = _buildTree(preorder,inorder,sub,flag+1,right);

        return root;

    }

    TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder)

    {

        int i = 0;

        return _buildTree(preorder,inorder,i,0,preorder.size()-1);

    }

};

2. LCR 154. 复杂链表的复制 - 力扣(LeetCode)

//思路:map 的使用

//本题在没有map之前我们采用的是在原链表相邻两节点中间插入新结点,然后修改原链表节点和新结点的指向,还是比较麻烦的。

//有了 map 后,这题就非常简单了

class Solution {

public:

    Node* copyRandomList(Node* head)

    {

        if(!head) return nullptr;

        Node* move = head;

        Node* tmp = head;

        map<Node*,Node*> ma;

        while(move)

        {

            Node* newnode = new Node(move->val);

            ma.insert({move,newnode});

            move = move->next;

        }

        while(tmp->next)

        {

            auto it1 = ma.insert({tmp,nullptr});

            auto it2 = ma.insert({tmp->next,nullptr});//根据key找到新节点的next

            auto flag = ma.insert({tmp->random,nullptr});//根据key找到新节点的random

            it1.first->second->next = it2.first->second;

            if(flag.first->first) it1.first->second->random = flag.first->second;//链接新节点

            else it1.first->second->random = nullptr;

            tmp = tmp->next;

        }

//处理最后一个节点

        auto it = ma.insert({tmp,nullptr});

        auto ran = ma.insert({tmp->random,nullptr});

        it.first->second->next = nullptr;

        if(ran.first->first) it.first->second->random = ran.first->second;

        else it.first->second->random = nullptr;

        return ma[head];

    }

};

3. 单词识别_牛客题霸_牛客网 (nowcoder.com)

//思路:map的运用。

//与 Day127 中的 "前K个高频单词" 基本类似,这里我们首先将每个单词以及每个单词的出现次数放入map中。注意:这里放入时要先将单词全部转换为小写,这里可以用C++标准库中的transform函数辅助实现。

//全部放入map中后,我们再将map存入vector中,存储的类型为pari<string,int>,pari可以理解为一个节点,存储着string和int。

//随后对vector进行排序,根据单词的出现次数降序排序;对于出现次数相同的单词,根据string小写的字典序排序。因为sort排序默认为升序,因此我们需要自行实现仿函数。

#include <iostream>

#include <map>

#include <vector>

#include <string>

#include <algorithm>

using namespace std;

struct Pair

{

    bool operator()(pair<string,int>& kv1,pair<string,int>& kv2)//

    {

//因为我们将string存入map时就已经转换为小写,因此这里直接比较string即可。

        return kv1.second>kv2.second||(kv1.second==kv2.second&&kv1.first<kv2.first);

    }

};

int main()

{

    string str;

    getline(cin,str);

    auto left = str.begin();

    auto right = str.begin();

    map<string,int> ma;

    while(right!=str.end())

    {

        if(*right==' ')

        {

            string tmp(left,right);

            transform(tmp.begin(),tmp.end(),tmp.begin(),[](unsigned char c){return tolower(c);});//将字符串转换为小写

            left = right+1;

            ma[tmp]++;//放入map中并记录出现次数

        }

        right++;

    }

//跳出循环后最后一个单词还未放入,但是因为最后一个单词后跟着一个句号,因此右边开区间为right-1,忽略句号。

    ma[string(left,right-1)]++;

    vector<pair<string,int>> v(ma.begin(),ma.end());

    sort(v.begin(),v.end(),Pair());

    for(auto it:v) cout<<it.first<<":"<<it.second<<endl;//最后遍历输出即可

    return 0;

}

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

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

相关文章

足球预测模型理论:足球数据分析——XGBoost算法实战

简介&#xff1a;本文将探讨如何使用XGBoost算法进行足球数据分析&#xff0c;特别是足球运动员身价估计。我们将通过实例和生动的语言&#xff0c;解释XGBoost算法的原理和实际应用&#xff0c;帮助读者理解复杂的技术概念&#xff0c;并提供可操作的建议和解决问题的方法。 足…

Eclipse离线安装Tomcat插件

Eclipse离线安装Tomcat插件 最近的自己在对低版本的代码的进行维护补丁,不得不采用Eclipse 来进行跑项目,真的是折磨 其中遇到一个问题就是打开Eclipse的2021版,安装Tomcat的插件,发现好家伙,就是死活在线安装失败 (喵的,真的是让我抓耳挠腮!!哈哈哈) 无奈,只好采用离线安装,特…

实时语音识别技术实现

实时语音识别 1.环境2.完整代码3.效果4.可能的问题 实时语音识别 1.环境 python版本&#xff1a;3.11.9 2.完整代码 import sqlite3 import timefrom funasr import AutoModel import sounddevice as sd import numpy as np# 模型参数设置 chunk_size [0, 10, 5] encoder_c…

60.【C语言】内存函数(memset,memcmp函数)

3.memset函数(常用) *简单使用 memset:memory set cplusplus的介绍 点我跳转 翻译: 函数 memset void * memset ( void * ptr, int value, size_t num ); 填充内存块 将ptr指向的内存块的前num个字节设置为指定值&#xff08;解释为无符号char&#xff09;。 (指针ptr类型为…

短剧APP分销小视频联盟收益源码带版权激励视频无需自己上传短剧

功能介绍&#xff1a; 带2000多部短剧资源&#xff0c;有版权&#xff0c;无需自己更新短剧&#xff0c; 已对接广告联盟&#xff0c;解锁短剧观看激励视频&#xff0c;对接各大广告平台 带刷小视频功能&#xff0c;插入视频广告&#xff0c;获取广告收益&#xff0c; 带任…

力扣206.反转链表

力扣《反转链表》系列文章目录 刷题次序&#xff0c;由易到难&#xff0c;一次刷通&#xff01;&#xff01;&#xff01; 题目题解206. 反转链表反转链表的全部 题解192. 反转链表 II反转链表的指定段 题解224. 两两交换链表中的节点两个一组反转链表 题解325. K 个一组翻转…

【C++掌中宝】缺省参数的全面解析

文章目录 前言1. 什么是缺省参数&#xff1f;2. 缺省参数的分类2.1 全缺省【备胎是如何使用的&#x1f605;】2.1.1 疑难细究 2.2 半缺省2.2.1 错误用法示范2.2.2 正确用法示范2.2.3&#x1f525;实参缺省与形参缺省的混合辨析&#x1f525; 3. 缺省参数的规则和限制4. 规定必须…

Leetcode 1039. 多边形三角形剖分的最低得分 枚举型区间dp C++实现

问题&#xff1a;Leetcode 1039. 多边形三角形剖分的最低得分 你有一个凸的 n 边形&#xff0c;其每个顶点都有一个整数值。给定一个整数数组 values &#xff0c;其中 values[i] 是第 i 个顶点的值&#xff08;即 顺时针顺序 &#xff09;。 假设将多边形 剖分 为 n - 2 个三…

邮件发送高级功能详解:HTML格式、附件添加与SSL/TLS加密连接

目录 一、邮件HTML格式设置 1.1 HTML邮件的优势 1.2 HTML邮件的编写 二、添加附件 2.1 附件的重要性 2.2 添加附件的代码示例 2.3 注意事项 三、使用SSL/TLS加密连接 3.1 SSL/TLS加密的重要性 3.2 SSL/TLS加密的工作原理 3.3 在邮件发送中启用SSL/TLS 3.3.1 邮件客…

力扣 LCR 020 回文子串 -Python

题目链接&#xff1a;LCR 020. 回文子串 - 力扣&#xff08;LeetCode&#xff09; 题目描述&#xff1a; 给定一个字符串 s &#xff0c;请计算这个字符串中有多少个回文子字符串。 具有不同开始位置或结束位置的子串&#xff0c;即使是由相同的字符组成&#xff0c;也会被视…

OpenFeign 远程调用

目录 前言 OpenFeign 介绍 OpenFeign 的前⾝ Spring Cloud Feign 快速上⼿ 引⼊依赖 添加注解 编写 OpenFeign 的客户端 远程调⽤ OpenFeign 参数传递 传递单个参数 传递多个参数 传递对象 传递 JSON 最佳实践 Feign 继承⽅式 创建⼀个 Module 引⼊依赖 编写…

EasyExcel将数据库里面的数据生成excel文件

EasyExcel官方文档 1.在model模块导入依赖 <!-- 生成报表--> <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>4.0.3</version> </dependency> 2.修饰实体类 package…

四叉树碰撞代码

使用raylib 代码来源 https://github.com/seyhajin/flux-samples/blob/master/raylib/quadtree/quadtree.c 原来是视锥碰撞四叉树&#xff0c;经过一周开发变成碰撞检测四叉树可视化 后经过改写 绿色检测 灰色检测 //https://github.com/seyhajin/flux-samples/blob/mast…

【C++篇】走进C++标准模板库:STL的奥秘与编程效率提升之道

文章目录 C STL 初探&#xff1a;打开标准模板库的大门前言第一章: 什么是STL&#xff1f;1.1 标准模板库简介1.2 STL的历史背景1.3 STL的组成 第二章: STL的版本与演进2.1 不同的STL版本2.2 STL的影响与重要性 第三章: 为什么学习 STL&#xff1f;3.1 从手动编写到标准化解决方…

three.js 让阴影更黑更暗

r166 可以通过设置intensity属性来配置每个光源的阴影强度 light.shadow.intensity 3;或者 修改shader THREE.ShaderChunk["shadowmap_pars_fragment"]THREE.ShaderChunk["shadowmap_pars_fragment"].replace( "occlusion clamp( max( hard_sha…

基于深度学习的药品三期OCR字符识别

在药品生产线上,药品三期的喷码与条形码识别是保证药品追溯和安全管理的重要环节。传统的识别方法依赖于人工操作,不仅效率低下且容易出错。随着深度学习技术的不断发展,基于OCR(Optical Character Recognition,光学字符识别)的自动化识别系统逐渐成为主流。本文将以哪吒…

计算机前沿技术-人工智能算法-大语言模型-最新论文阅读-2024-09-17

计算机前沿技术-人工智能算法-大语言模型-最新论文阅读-2024-09-17 1. Large Language Models in Biomedical and Health Informatics: A Review with Bibliometric Analysis H Yu, L Fan, L Li, J Zhou, Z Ma, L Xian, W Hua, S He… - Journal of Healthcare …, 2024 生物…

中国雕塑—孙溟展浅析碑帖《郑文公碑》

中国雕塑——孙溟展浅析碑帖《郑文公碑》 《郑文公碑》上碑 《郑文公碑》 下碑 《郑文公碑》是北魏摩崖刻石&#xff0c;又称是《郑羲碑》&#xff0c;属楷书体&#xff0c;此碑分两块&#xff0c;在山东平度县天柱山的那块称之为“上碑”&#xff0c;上碑全称《魏故中书令秘书…

ONNX模型部署利器ONNXRUNTIME框架

1.ONNXRUNTIME介绍 ONNX格式模型部署兼容性最强的框架 ONNXRUNTIME&#xff0c;基本上不会有算子不支持跟不兼容的情况出现&#xff0c;只要能导出ONNX格式模型&#xff0c;它基本上都能成功加载&#xff0c;成功推理。虽然在CPU速度不及OpenVINO、GPU上速度不及TensorRT&#…

RK3588NPU驱动版本升级至0.9.6教程

RK3588NPU驱动版本升级至0.9.6教程 1、下载RK3588NPU驱动2、修改NPU驱动源码2.0 修改MONITOR_TPYE_DEV写错问题2.1 解决缺少函数rockchip_uninit_opp_table问题2.2 解决缺少函数vm_flags_set、vm_flag_clear的问题2.3 内核编译成功2.4 重新构建系统 3、注意事项4、其他问题处理…