自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 问答 (1)
  • 收藏
  • 关注

原创 二叉树的前中后序遍历(递归法、迭代法)leetcode144、94/145

给你二叉树的根节点 root ,返回它节点值的 前序 遍历。示例 1:输入:root = [1,null,2,3]输出:[1,2,3]示例 2:输入:root = []输出:[]示例 3:输入:root = [1]输出:[1]示例 4:输入:root = [1,2]输出:[1,2]示例 5:输入:root = [1,null,2]输出:[1,2]提示:树中节点数目在范围 [0, 100] 内。

2024-07-02 12:10:31 167

原创 leetcode347.前k个高频元素

给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。示例 1:输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]示例 2:输入: nums = [1], k = 1输出: [1]

2024-06-30 23:07:03 288

原创 优先队列(leetcode239滑动窗口最大值、华为OD机试C卷-执行任务赚积分)

给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回 滑动窗口中的最大值。

2024-06-30 20:52:08 357

原创 二叉树的层序遍历/后序遍历(leetcode104二叉树的最大深度、111二叉树的最小深度)(华为OD悄悄话、数组二叉树)

给定一个二叉树 root ,返回其最大深度。二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。本题可以使用前序(中左右),也可以使用后序遍历(左右中),使用前序求的就是深度,使用后序求的是高度。二叉树节点的深度:指从根节点到该节点的最长简单路径边的条数或者节点数(取决于深度从0开始还是从1开始)二叉树节点的高度:指从该节点到叶子节点的最长简单路径边的条数或者节点数(取决于高度从0开始还是从1开始)

2024-06-29 18:13:10 1389

原创 华为OD机试C卷(100分)-执行任务赚积分(c语言)

接下来 N 行,每行两个空格分隔的整数(SLA 和 V),SLA 表示任务的最晚处理时间,V 表示任务对应的积分。每个任务都有最晚处理时间限制和积分值,在最晚处理时间点之前处理完成任务才可获得对应的积分奖励。现有N个任务需要处理,同一时间只能处理一个任务,处理每个任务所需要的时间固定为1。所以在第1个时间单位内,选择处理有5个积分的任务。可用于处理任务的时间有限,请问在有限的时间内,可获得的最多积分。第1个时间单位内,处理任务3,获得4个积分。第2个时间单位内,处理任务4,获得5个积分。

2024-06-28 16:04:33 396

原创 在 C 语言中使用 UT_hash_handle 简化实现哈希表

4、插入元素到哈希表:使用宏 HASH_ADD_INT 或 HASH_ADD_KEYPTR 将元素插入到哈希表中。2、定义包含哈希表支持的结构体:在定义结构体时,需要在结构体中添加 UT_hash_handle 宏。5、查找元素:使用宏 HASH_FIND_INT 或 HASH_FIND_STR 查找哈希表中的元素。6、遍历哈希表:使用宏 HASH_ITER 遍历哈希表中的所有元素。7、删除元素:使用宏 HASH_DEL 删除哈希表中的元素。

2024-06-26 11:46:20 197

原创 华为OD机试C卷(100分)-来自异国的客人

该客人有个幸运数字n(n < m),每次购物时,其总是喜欢计算本次支付的花费(折算为异国的价格后)中存在多少幸运数字。说明 10用4进制表示时为22,同时,异国客人的幸运数字是2,故而此处输出为2,表示有2个幸运数字。此时客人的幸运数字为4,但是由于该国最大为4进制,故而在该国的进制下不可能出现幸运数字,故而返回0。问:当其购买一个在我国价值 k 的产品时,其中包含多少幸运数字?k 表示该客人购买的物品价值(以十进制计算的价格)输出幸运数字的个数,行末无空格。第一行输入为 k,n,m。

2024-06-25 21:31:35 272

原创 LeetCode刷题(739/496/503)/华为od转盘寿司-单调栈

对于每个 0

2024-06-24 15:48:37 994

原创 华为OD机试C卷(100分)-用连续自然数之和来表达整数(c语言)

如果有多种表达式,输出要求为:自然数个数最少的表达式优先输出,每个表达式中按自然数递增的顺序输出,具体的格式参见样例。在每个测试数据结束时,输出一行”Result:X”,其中X是最终的表达式个数。给定一个整数,计算该整数有几种连续自然数之和的表达式,且打印出每种表达式。整数 9 有三种表示方法,第1个表达式只有1个自然数,最先输出,每个表达式中的自然数都是按递增次序输出的。第2个表达式有2个自然数,第2次序输出,第3个表达式有3个自然数,最后输出。该整数的所有表达式和表达式的个数。数字与符号之间无空格。

2024-06-22 07:45:00 233

原创 华为OD机试C卷(100分)-最富裕的小家庭(C语言)

3是1的子节点,但是3的家庭关系先被定义出来了,因此如果将家庭的财富都汇总到父节点身上,上面逻辑会将节点3的财富值变为1200,从而影响后面父节点为1的家庭财富计算。需要注意的是,题目规定成员编号 1~N,因此定义wealth数组时,我们应该将其长度定义为N+1,且从索引1开始操作,来匹配成员编号1~N。在一颗树中,每个节点代表一个家庭成员,节点的数字表示其个人的财富值,一个节点及其直接相连的子节点被定义为一个小家庭。第二行为 N 个空格分隔的数,表示编号 1~N 的成员的财富值。最富裕的小家庭的财富和。

2024-06-21 14:00:00 525

原创 华为OD机试C卷(100分)-多段线数据压缩(C语言)

因此,我们需要对这种向量做简化,方便后续相同方向的比较,即将(3,-3)简化为(1,-1),字面上看,其实就是横坐标、纵坐标都除以3,那么base=3该如何求解呢?上图中的多线段可以用下面的坐标串表示:(2,8),(3,7),(3,6),(3,5),(4,4),(5,3),(6,2),(7,3),(8,4),(7,5)。当然还有可能出现这样的情况,比如A坐标(3,5),B坐标(6,2),此时A→B向量坐标为(3, -3)运动,指的是从点A到点B,而运动的方向,自然是点A到点B的方向。

2024-06-21 08:00:00 402

原创 华为OD机试C卷(100分)-机器人搬砖(C语言)

如果只有一个仓库一堆砖,那么这堆砖就可以平分到8小时内搬,这样才能保证每小时搬最少的砖,消耗最少的能量,即每小时可以充最少的能量。机器人每小时能搬砖的数量取决于有多少能量格,机器人一个小时中只能在一个仓库中搬砖,机器人的能量格只在这一个小时有效,为使得机器人损耗最小化,应尽量减小每次补充的能量格数。如果mid能量块可以满足8小时内搬完所有仓库,那么mid就是一个可能解,但不一定是最优解,此时我们应该尝试充更少的能量,即缩小k的右边界范围到 = mid - 1。机器人每小时补充能量格只在这一个小时中有效;

2024-06-20 14:15:00 504

原创 华为OD机试C卷(100分)-CPU算力分配(C语言)

其中 sumA, sumB 是已知的,因此,我们可以遍历A组所有元素a,计算出b= a - (sumA - sumB)/2,看B组中是否存在对应b,若存在,则a b就是题解。现有两组服务器A和B,每组有多个算力不同的CPU,其中 A[i] 是 A 组第 i 个CPU的运算能力,B[i] 是 B组 第 i 个CPU的运算能力。说明 从A组中选出算力为1的CPU,与B组中算力为2的进行交换,使两组服务器的算力都等于3。求两组服务器中,用于交换的CPU的算力,并且要求从A组服务器中选出的CPU,算力尽可能小。

2024-06-20 08:30:00 370

原创 华为OD机试C卷(100分)-灰度图存储(C语言)

如上图是,定义了一个10*10长度的一维数组,然后按顺序填充指定数量个灰阶值,最后要找的(3,4)二维坐标的灰阶值,对应到一维坐标为 3 * 列数 + 4,即 3 * 10 + 4 = 34 索引位置的灰阶值。黑白图像常采用灰度图的方式存储,即图像的每个像素填充一个灰色阶段值,256阶灰图是一个灰阶值取值范围为 0~255 的灰阶矩阵,0表示全黑,255表示全白,范围内的其他值表示不同的灰度。系统保证输入的像素坐标是合法的,不会出现不在矩阵中的像素。输出数据表示的灰阶矩阵的指定像素的灰阶值。

2024-06-19 16:35:44 463

原创 华为OD机试C卷(100分)-攀登者1

例如:[0,1,2,4,3,1,0,0,1,2,3,1,2,1,0],代表如下图所示的地图,地图中有两个山脉位置分别为 1,2,3,4,5 和 8,9,10,11,12,13,最高峰高度分别为 4,3。最高峰位置分别为3,10。地图表示为一维数组,数组的索引代表水平位置,数组的元素代表相对海拔高度。一个山脉可能有多座山峰(高度大于相邻位置的高度,或在地图边界且高度大于相邻的高度)。本题考试时为核心代码模式,非ACM模式,即无需自己解析输入数据。输入 0,1,4,3,1,0,0,1,2,3,1,2,1,0。

2024-06-19 08:15:00 600

原创 华为OD机试C卷(100分)-围棋的气(C语言)

因此,我们只需要遍历19*19的棋盘中每一个位置,检查对应位置是否有棋子,若没有棋子,则检查其上下左右四个位置是否存在黑棋、白棋,若存在则对应颜色的棋子的气数+1,需要注意的是,一个位置只能产生一个气,因此如果该位置的上下左右位置有多个黑棋,也只能为黑棋加一个气,白棋同理。所有同色棋子的气之和叫做该色棋子的气,需要注意的是,同色棋子重合的气点,对于该颜色棋子来说,只能计算一次气,比如下图中,黑棋一共4口气,而不是5口气,因为黑1和黑2中间红色三角标出来的气是两个黑棋共有的,对于黑棋整体来说只能算一个气。

2024-06-18 16:30:00 446

原创 华为OD机试C卷(100分)-小明的幸运数(C语言)

本题应该没有啥异常情况,但是输入里面给了给个入参的范围限制,因此我做了对输入参数范围的校验,如果不满足,则输出异常码:12345。总共2个指令,幸运数为1,按照指令行进,依次如下游戏开始前,站在坐标轴原点,此时坐标值为0;如果幸运数是0,且存在指令为0的情况,那么此时小明是行进步数是+1,还是-1,还是保持不动?指令为-5,正好等于幸运数,后退5+1=6步,此时坐标值为-6;指令为1,正好等于幸运数,前进1+1=2步,此时坐标值为-3;本题应该只是逻辑模拟题。指令为0,既不前进,也不后退,此时坐标值为1;

2024-06-18 07:45:00 334

原创 华为OD机试C卷(100分)-找座位(C语言)

现在给出一排观众座位分布图,座位中存在已落座的观众,请计算出,在不移动现有观众座位的情况下,最多还能坐下多少名观众。在一个大型体育场内举办了一场大型活动,由于疫情防控的需要,要求每位观众的必须间隔至少一个空位才允许落座。一个数组,用来标识某一排座位中,每个座位是否已经坐人。0表示该座位没有坐人,1表示该座位已经坐人。整数,在不移动现有观众座位的情况下,最多还能坐下多少名观众。1 ≤ 数组长度 ≤ 10000。

2024-06-17 21:00:00 501

原创 华为OD机试C卷(100分)-绘图机器(C语言)

期间可以通过指令在纵坐标轴方向进行偏移,offsetY为正数表示正向偏移,为负数表示负向偏移。绘图机器的绘图笔初始位置在原点(0,0)机器启动后按照以下规则来进行绘制直线。一个整数表示计算得到的面积 用例保证结果范围在0到4294967295之内。请计算绘制的直线和横坐标轴以及x=E的直线组成的图形面积。接下来N行 每行两个整数表示一条绘制指令x offsetY。尝试沿着横线坐标正向绘制直线直到给定的终点E。给定的横坐标终点值E 以及若干条绘制指令,表示有N条指令,机器运行的横坐标终点值E。

2024-06-17 11:00:00 387

原创 华为OD机试C卷(100分)-螺旋数字矩阵(C)/LeetCode59.螺旋矩阵II

给出数字个数 n (0 < n ≤ 999)和行数 m(0 < m ≤ 999),从左上角的 1 开始,按照顺时针螺旋向内写方式,依次写出2,3,…,n,最终形成一个 m 行矩阵。给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix。疫情期间,小明隔离在家,百无聊赖,在纸上写数字玩。输出:[[1,2,3],[8,9,4],[7,6,5]]说明 3个数字写5行,只有一列,数字不够用*号填充。两个整数,空格隔开,依次表示 n、m。

2024-06-17 00:50:52 447

原创 华为OD机试C卷(100分)- 手机App防沉迷系统(C语言)

注册使用时段时,如果高优先级的App时间和低优先级的时段有冲突,则系统会自动注销低优先级的时段,如果App的优先级相同,则后添加的App不能注册。2.2. App_registering 的优先级不高于(≤)App_registered,则App_registering不能注册,即终止后续比较。请编程实现,根据输入数据注册App,并根据输入的时间点,返回时间点使用的App名称,如果该时间点没有注册任何App,请返回字符串“NA”。这样两个App的时段比较,其实判断两个区间是否有交集,假设两个时段分别为。

2024-06-16 17:36:09 941

原创 华为OD机试C卷(100分)-求字符串中所有整数的最小和(C语言)

需要注意的是,当c == ‘-’,也需要注意出现 “-34-40” 这种情况,即 c == ‘-’,也需要先判断isNegative == true,则需要将negative容器中内容拼接,然后转化为负数合入结果,ans -= parseInt(negative.join(“”)),完成后,将isNeagtive = false,并且清空negative容器。比如1234的最小值是多少,那肯定是1+2+3+4,即每位都是一个独立数,且都是一个小于10的数,它们之和就是最小的。负数字符串的最小值如何计算?

2024-06-16 17:34:15 222

原创 华为OD机试C卷(100分)-最长子字符串的长度(一)

如果 ‘o’ 为奇数个,由于s是环形的,因此只要任选环中任意一个’o’解开(删除),剩下的就是含有偶数个 ‘o’ 的子串,该子串长度为 s.length - 1。说明 最长子字符串"oxdolxl",由于是首尾连接一起的,所以最后一个’x’和开头的’l’是连接在一起的,此字符串包含2个’o’给你一个字符串 s,首尾相连成一个环形,请你在环中找出 ‘o’ 字符出现了偶数次最长子字符串的长度。如果 ‘o’ 为偶数个,则s本身就是一个含有偶数个’o’的子字符串,结果输出s.length。输入 looxdolx。

2024-06-16 17:34:01 318

原创 华为OD机试C卷(100分)-掌握的单词个数(C语言)

本题可以分别统计出chars和word中各字符的数量,然后遍历word每个字符c,比较word和chars中统计的c字符数量,如果word的c数量超过了chars的c数量,那么就就将超出数量计入diff中。’的数量 >= diff,那么说明chars可以使用万能字符补足不同部分,即可以学会word。” 可以当作 “a” 等字母。假如可以用 chars 中的字母拼写出 words 中的某个“单词”(字符串),那么我们就认为你掌握了这个单词。注意:每次拼写时,chars 中的每个字母和万能字符都只能使用一次。

2024-06-16 17:33:46 250

原创 华为OD机试C卷(100分)-API集群负载统计(C语言)

某个产品的RESTful API集合部署在服务器集群的多个节点上,近期对客户端访问日志进行了采集,需要统计各个API的访问频次,根据热点信息在服务器节点之间做负载均衡,现在需要实现热点信息统计查询功能。RESTful API是由多个层级构成,层级之间使用 / 连接,如 /A/B/C/D 这个地址,A属于第一级,B属于第二级,C属于第三级,D属于第四级。接下来N行,每一行为一个RESTful API的URL地址,约束地址中仅包含英文字母和连接符 / ,最大层级为10,每层级字符串最大长度为10。

2024-06-16 17:33:20 176

原创 华为OD机试C卷(100分)-英文输入法(C语言)

说明 从用户已输入英文语句”The furthestdistance in the world, Is not between life and death, But when I stand in frontof you, Yet you dont know that I love you.”中提炼出的单词,符合“f”作为前缀的,有“furthest”和“front”,按字典序排序并在单词间添加空格后输出,结果为“front furthest”。如果联想不到,请输出用户输入的单词前缀。

2024-06-16 17:32:48 273

原创 华为OD机试C卷(100分)-字符串变换最小字符串(C语言)

给定一个字符串s,最多只能进行一次变换,返回变换后能得到的最小字符串(按照字典序进行比较)。说明 abcdef已经是最小字符串,不需要交换。变换规则:交换字符串中任意两个不同位置的字符。说明 a和b进行位置交换,可以得到最小字符串。按照要求进行变换得到的最小字符串。一串小写字母组成的字符串s。s是都是小写字符组成。

2024-06-16 17:00:26 168

原创 华为OD机试C卷(100分)-最大N个数与最小N个数的和(C语言)

给定一个数组,编写一个函数来计算它的最大N个数与最小N个数的和。你需要对数组进行去重。说明 最大2个数[100,95],最小2个数[83,64], 输出为342。说明 最大2个数[4,3],最小2个数[3,2], 有重叠输出为-1。最大N个数与最小N个数不能有重叠,如有重叠,输入非法返回-1。第三行输入N,N表达需要计算的最大、最小N个数。数组中数字范围[0, 1000]第一行输入M, M标识数组大小。第二行输入M个数,标识数组内容。输出最大N个数与最小N个数的和。

2024-06-16 14:02:22 234

原创 华为OD机试C卷(100分)-字符串筛选排序(C语言)

根据ASCII码值排序前4个字母为AABB由于B重复则只取B的第一个最小位置索引6。k如果大于字符串长度则输出最大ASCII码值的字母所在字符串的位置索引。k如果大于字符串长度则输出最大ASCII码值的字母所在字符串的位置索引。如果第k个最小ASCII码值的字母存在重复 则输出该字母的最小位置索引。输出该字母所在字符串中的位置索引(字符串的第一个位置索引为0)输出字符串中第k个最小ASCII码值的字母所在字符串的位置索引。F在字符串中位置索引为5(0为字符串的第一个字母位置索引)输入 AbCdeFG。

2024-06-16 13:55:05 268

原创 华为OD机试C卷(100分)-字符串分割(二)(C语言)

给定一个非空字符串S,其被N个‘-’分隔成N+1的子串,给定正整数K,要求除第一个子串外,其余的子串每K个字符组成新的子串,并用‘-’分隔。对于新组成的每一个子串,如果它含有的小写字母比大写字母多,则将这个子串的所有大写字母转换为小写字母;@中没有字母,连起来即12abc-abc-ABC-4aB-@子串为12abc、abCABc、4aB@,第一个子串保留,子串为12abc、abCABc、4aB@,第一个子串保留,后面的子串每3个字符一组为abC、ABc、4aB、@,abC中小写字母较多,转换为abc,

2024-06-16 13:49:52 382

原创 华为OD机试C卷(100分)-连续字母长度(C语言)

给定一个字符串,只包含大写字母,求在包含同一字母的子串中,长度第 k 长的子串的长度,相同字母只取最长的那个子串。说明 三个子串长度均为1,所以此时k = 1,k=2,k=3这三种情况均输出1。第二多的还是A,两次,但A已经存在最大连续次数三次,故不考虑;第二多的是H,3次,但是H已经存在4个连续的,故不考虑;说明 只含有3个包含同一字母的子串,小于k,输出-1。同一字母连续出现的最多的是A和H,四次;输出连续出现次数第k多的字母的次数。同一字母连续出现的最多的是A,三次;下个最长子串是B,所以输出1。

2024-06-16 13:46:09 266

原创 华为OD机试C卷(100分)-整型数组按个位值排序(C语言)

给定一个非空数组(列表),其元素数据类型为整型,请按照数组元素十进制最低位从小到大进行排序,十进制最低位相同的元素,相对位置保持不变。给定一个非空数组,其元素数据类型为32位有符号整数,数组长度[1, 1000]输入 1,2,5,-21,22,11,55,-101,42,8,7,32。输出 1,-21,11,-101,2,22,42,32,5,55,7,8。当数组元素为负值时,十进制最低位等同于去除符号位后对应十进制值最低位。

2024-06-16 12:41:51 461

原创 华为OD机试C卷(100分)-按身高和体重排队(C语言)

某学校举行运动会,学生们按编号(1、2、3…n)进行标识,现需要按照身高由低到高排列,对身高相同的人,按体重由轻到重排列;对于身高体重都相同的人,维持原有的编号顺序关系。第一个序列中的数值代表身高,第二个序列中的数值代表体重。说明 1和3的身高体重都相同,需要按照原有位置关系让1排在3前面,而不是3 1 2。输出的第一个数字2表示此人原始编号为2,即身高为100,体重为30的这个人。由于他和编号为1的人身高一样,但体重更轻,因此要排在1前面。排列结果,每个数值都是原始序列中的学生编号,编号从1开始。

2024-06-16 12:37:07 359

原创 c语言第九周练兵区

2 矩阵转置(4分)题目内容:某二维数组存放的数据构成一个nn的方阵,其中n<=5。写程序,从键盘输入n的值(n<=5),该nn矩阵中各元素的值按下面的公式计算:a[i][j] = i * n + j + 1其中,a[i][j]表示第i行第j列的元素。要求分别输出该矩阵和它的转置矩阵。注意:定义数字大小N时,请用#define N 10输入格式: “%d”输出提示:“The original matrix is:\n”输出提示:“The changed matrix is:\n”输

2020-08-31 16:13:30 285

原创 c语言第八周练兵区

3 统计正整数中指定数字的个数(4分)题目内容:从键盘输入一个正整数number,求其中含有指定数字digit的个数。例如:从键盘输入正整数number=1222,若digit=2,则1223中含有 3个2,要求用函数实现。函数原型为:int CountDigit(int number,int digit);程序运行结果示例1:Input m,n:1222,2↙3程序运行结果示例2:Input m,n:1234,6↙0输入提示信息:“Input m,n:\n”输入格式: “%d,%d”

2020-08-26 16:12:28 662

原创 c语言第七周练兵区

1 谐均值计算(4分)题目内容:两数值的谐均值可以这样计算:首先对两数值的倒数取平均值,最后再取倒数。编写一个带有两个double参数的函数,计算这两个参数的谐均值。函数原型为:double Calculate(double x,double y);程序运行结果示例1:Input two doubles:3 4↙1/((1/x+1/y)/2) = 3.429程序运行结果示例2:Input two doubles:6.5 3.8↙1/((1/x+1/y)/2) = 4.796输入提示信息:“

2020-08-10 19:04:06 537

原创 c语言第六周练兵区

1 绘制金字塔(4分)题目内容:要求用户从键盘输入一个大写字母,使用嵌套循环产生像下面这样的金字塔图案:AABAABCBAABCDCBA程序运行结果示例1:Please input a capital:D↙____A___ABA__ABCBA_ABCDCBA程序运行结果示例2:Please input capital:F↙______A_____ABA____ABCBA___ABCDCBA__ABCDEDCBAABCDEFEDCBA(说明:上面运行结果示例中,每行

2020-08-04 22:38:03 665

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除