20240904 华为笔试 二叉树消消乐

news2024/11/24 13:55:50

文章目录

  • 题目
  • 解题思路
  • 代码
    • BUG 代码
    • 最终代码

题目

  • 题目描述
    给定原始二叉树和参照二叉树(输入的二叉树均为满二叉树,二叉树节点的值范围为[1,1000],二叉树的深度不超过1000),现对原始二叉树和参照二又树中相同层级目值相同的节点进行消除,消除规则为原始二叉树和参照二又树中存在多个值相同的节点只能消除等数量的,消除后的节点变为无效节点,请按节点值出现频率从高到低输出消除后原始二叉树中有效节点的值(如果原始二叉树消除后没有有效节点返回0)。
  • 解答要求
    时间限制: C/C++ 1000ms, 其他语言:2000ms
    内存限制: C/C++256MB,其他语言:512MB
  • 输入
    原始二叉树中的节点个数
    原始二叉树
    参照二叉树中的节点个数
    畚照二叉树
  • 输出
    原始二叉树中有效节点的值,按出现频率从高到低排序(相同频率的值按大小排序),相同频率的值按降序排列。
  • 样例1
    输入:
    7
    1 3 3 3 4 5 6
    3
    2 3 4
    输出:
    36541
    解释:
    原始二叉树A消除参照二叉树B中的重复元素后,有效节点剩余2个3,1个6,1个5,1个4,1个1,3出现的频率2,6、5、4、1出现的频率为1,按值从大到小排序,所以排序结果为36541。
    在这里插入图片描述
  • 样例2
    输入:
    15
    5 6 6 6 7 7 7 8 8 9 9 7 7 5 6
    7
    5 6 6 7 7 8 8
    输出:
    79865
    解释:
    原始二叉树A消除参照二叉树B中的重复元素后,有效节点剩余3个7,2个9,2个8,2个6,1个5,8出现的频率为3,7出现的频率为2,6出现的频率为2,6的值比5大,所以排序结果为79865
    在这里插入图片描述
  • 样例3
    输入:
    7
    1 3 4 3 2 2 6
    3
    2 4 3
    输出:
    2631
    解释:
    原始二叉树A消除参照二叉树B中的重复元素后,有效节点剩余2个2,1个6,1个3,1个1;2出现的频率2,6、3、1出现的频率为1,按值从大到小排序,所以排序结果为2631。
    在这里插入图片描述

解题思路

  • main 函数内分别 构造两个 vector 存入原始二叉树和参照二叉树的信息 ,构造1个结果map表示原始参考树剩余有效节点及其数量,初始化层数 n2=0。
  • 遍历提取出原始二叉树和参考二叉树每一层的数据
    对二叉树的第i个元素进行遍历,判断当前元素是否是该层的首元素(i==pow(2,n2-1)),若不是则继续遍历;若该元素是该层的首元素,则 提取出原始二叉树和参考二叉树中该层的所有元素,分别存入两个 map,表示该层节点的数值及其数量。
    遍历参考树该层的节点,对原始树该层的数据抵消,最后存储剩余节点及数量
    对参考树该层的数据进行遍历,并在原始二叉树中查找该数据,若能找到,则把该数据在原始二叉树这一层的数量 减去 在参考二叉树这一层的数量。
    对原始参考树该层的数据进行遍历,若该数据的数量大于0,则表示该数据为有效节点,则将该数据及其数量存入结果map中。该层处理结束后,将层数n2++,继续遍历下一个节点i+1的元素。
  • 若结果中有效节点数为空则直接输出0,否则按照节点数和节点数值排序输出
    构造1个vector用于排序,vector中的每一个元素都是一个 pair<int,int> ,表示剩余有效节点及其数量。构造1个排序规则函数对这个vector进行排序:若节点数相同则按照节点数值排序,否则按照节点数量排序。

代码

BUG 代码

  • BUG 代码:没有考虑样例3这样的情况,该代码只是按照相同位置的相同元素进行了抵消,应当按照每一层的相同元素进行抵消。
#include <iostream>
#include <vector>
#include <map>
#include <algorithm>

using namespace std;

bool compare(const pair<int, int>& a, const pair<int, int>& b) {
   
    if (a.second == b.second) {
   
        return a.first > b.first; //相同频率时,按值降序排序
    }
    return a.second > b.second;   //按频率降排序
}

int main() {
   
    int n, m;
    vector<int> res_vec;

    cin >> n;
    vector<int> n_vec(n);
    for (int i = 0; i < n; ++i) {
   
        cin >> n_vec[i];
    }

    cin >> m;
    vector<int> m_vec(m);
    for (int i = 0; i < m; ++i) {
   
        cin >> m_vec[i

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

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

相关文章

进程概念三

1&#xff0c;运行状态R 1&#xff0c;理论&#xff1a; 在cpu中&#xff0c;有一个结构体&#xff1a;runqueue组成的一个双向链表&#xff0c;里面记录着对应的进程的代码和数据&#xff0c;存在内存中随时准备被调度&#xff0c;这种时候就叫做运行状态 2&#xff0c;why&a…

25西安电子科技大学考研预报名人数信息—公布

01报名信息直播 西安电子科技大学之前考研收集信息表现在公布&#xff0c;本次收集涉及到833、834、893&#xff08;原953&#xff09;专业&#xff0c;即计算机科学与技术学院、人工智能学院、网络与信息安全学院、卓越工程师学院 对于大家想提问的问题&#xff0c;学长学姐将…

AI智能聊天问答系统源码+AI绘画系统+图文搭建部署教程,文生图图生图,TTS语音识别输入,AI智能体,文档分析

一、前言 人工智能的快速进步吸引了全球的瞩目&#xff0c;各式AI应用如绘图、语言模型和视频处理等已在多个领域获得应用。这些技术不仅加速了科技的创新&#xff0c;也在艺术创作、内容生产和商业实践等方面显示了其巨大潜力。例如&#xff0c;AI语言模型极大提升了内容自动…

Cursor 与 DeepSeek API 的完美融合

在当今的编程领域中&#xff0c;选择合适的工具对于提高编程效率和质量至关重要。今天&#xff0c;我们将深入探讨如何将强大的 AI 辅助编程工具 Cursor 与优秀的 DeepSeek API 进行配置&#xff0c;以实现更加高效的编程体验。 一、Cursor&#xff1a;强大的 AI 辅助编程工具…

前端实现-搜索关键字标红处理

1、实现效果 2、代码实现 searchNotes(data, value) {const searchTerms = value.split( );const aData = [];for (let i = 0; i < data.length; i++) {const item = data[i];let titleMatches = true;let gaishuMatches = true;for (const term of searchTerms) {if (!ite…

Docker 的使用-01

一、Docker 设置和镜像源 1.1、设置 #查看 Docker 信息 docker version docker info#守护线程启动&#xff1a; systemctl daemon-reload 重启Docker服务&#xff1a; systemctl restart docker#关闭Docker服务 sudo systemctl stop docker#启动Docker服务 systemctl start d…

finereport制作带刷新和滚动的明细表

1、数据库查询 SELECT * FROM S订单 limit 602、配置页面内容 里面配置 订单明细 right(now(), 8) FORMAT(today(), "EEEE", "Locale.UK") today()3、时间按秒刷新 # 全页面刷新&#xff0c;则可用以下js: setInterval(“self.location.reload();”,1000…

AI 仅有大模型吗?AI Agent 究竟有多牛?

今天来和大家聊一个当下科技领域特别火爆的概念——AI Agent&#xff01; 前世界首富在其个人博客上写道&#xff1a; AI Agent&#xff08;AI智能体/助理/助手&#xff09;“将彻底改变计算机使用方式&#xff0c;并颠覆软件行业”。 他还预言“Android、iOS和Windows都是平…

喜讯!迈威通信TSN产品通过“时间敏感网络(TSN)产业链名录计划”评测,各项指标名列前茅

TSN技术&#xff0c;作为推动企业网络化与智能化转型的关键力量&#xff0c;已成为工业网络迈向下一代演进的共识方向&#xff0c;正加速重构工业网络的技术架构与产业生态。为响应这一趋势&#xff0c;工业互联网产业联盟携手中国信息通信研究院及50余家产学研用单位&#xff…

leetcode---素数,最小质因子,最大公约数

1 判断一个数是不是质数(素数) 方法1&#xff1a;依次判断能否被n整除即可&#xff0c;能够整除则不是质数&#xff0c;否则是质数 方法2&#xff1a;假如n是合数&#xff0c;必然存在非1的两个约数p1和p2&#xff0c;其中p1<sqrt(n)&#xff0c;p2>sqrt(n)。 方法3&…

【Unity学习笔记】解决疑似升级Win11或使用Unity6导致Unity旧版本无法打开的问题

【Unity学习笔记】解决疑似升级Win11或使用Unity6导致Unity旧版本无法打开的问题 一句话省流&#xff1a; 确保项目地址没有任何中文&#xff0c;重新申请个许可证&#xff0c;然后该咋就咋&#xff0c;完事。 ——————————————————————————————…

攻防世界(CTF)~Reverse-easyRE1

题目介绍 下载附件后一个32位一个64位 64位的放到ExeinfoPE查看一下有无壳子&#xff08;无壳&#xff09; 放IDA看一下伪代码&#xff0c;习惯性看一下main函数&#xff0c;直接发现了flag flag{db2f62a36a018bce28e46d976e3f9864}

解锁智慧之门:十大知识管理工具深度剖析

在当今信息爆炸的时代&#xff0c;如何高效地管理和利用知识已成为企业和个人发展的重要挑战。为了帮助大家更好地应对这一挑战&#xff0c;本文将深度剖析十大知识管理工具&#xff0c;这些工具不仅能够帮助我们更好地组织、存储和分享知识&#xff0c;还能提升我们的工作效率…

华为OD机试 - 芯片资源占用(Python/JS/C/C++ 2024 E卷 200分)

华为OD机试 2024E卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试真题&#xff08;Python/JS/C/C&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;私信哪吒&#xff0c;备注华为OD&#xff0c;加入华为OD刷题交流群&#xff0c;…

Linux_进程概念详解

本篇文章为作者学习Linux时所作总结&#xff0c;可能会有总结不足或疏漏之处&#xff0c;如有发现请各路大神批评指正 什么是进程&#xff1f; 课本上说&#xff0c;进程是程序的一个执行实例&#xff0c;正在执行的程序。对&#xff0c;也不对&#xff0c;我称之为正确的废话…

嵌入式面试——FreeRTOS篇(七) 软件定时器

本篇为&#xff1a;FreeRTOS 软件定时器篇 一、软件定时器的简介 1、定时器介绍 答&#xff1a; 定时器&#xff1a;从指定的时刻开始&#xff0c;经过一个指定时间&#xff0c;然后触发一个超时事件&#xff0c;用户可以自定义定时器周期。 硬件定时器&#xff1a;芯片本…

python项目实战-xPath下载人生格言

事先声明一下&#xff0c;仅分享爬虫经验&#xff0c;不会对网站有影响的&#xff0c;也请想要实操的小伙伴不要对网站频繁访问&#xff0c;如有侵权请联系我删除文章 文章目录 代码展示步骤解析思路整理节点树xPath语法分析网页结构 实战思路获取源代码源代码转化成节点树提取…

新手必备!百度思维导图在内四款必备工具分享

作为一名资料员&#xff0c;每天都要处理大量的信息和数据&#xff0c;思维导图对我来说简直就是救星。它帮我理清思路&#xff0c;把复杂的信息条理化&#xff0c;让我能更高效地完成工作。今天&#xff0c;我就来跟大家分享一下我用过的几款思维导图工具&#xff1a;福昕思维…

java项目之基于保密信息学科平台系统源码(springboot+vue+mysql)

项目简介 基于保密信息学科平台系统实现了以下功能&#xff1a; 基于保密信息学科平台系统的主要使用者管理员有个人中心&#xff0c;用户管理&#xff0c;教师管理&#xff0c;学科概况管理&#xff0c;人才培养管理&#xff0c;学科动态管理&#xff0c;学科资源管理&#…

2本书让你轻松入门大模型!《大模型入门:技术原理与实战应用》+《自然语言处理:大模型理论与实践》

随着大模型技术的不断完善和普及&#xff0c;我们将进入一个由数据驱动、智能辅助的全新工作模式和生活模式。个人和企业将能够利用大模型来降本增效&#xff0c;并创造全新的用户体验。 人工智能是人类探索未来的重要领域之一&#xff0c;以GPT为代表的大模型应用一经推出在短…