五木大大
十年以上编程经验
喜欢和各路朋友一起探讨技术
喜欢交朋友
喜欢思想的碰撞
喜欢分享
展开
-
【华为OD】手撕代码:杀进程。杀掉父进程,那么父进程派生的所有子进程都需要被杀掉。 C++代码[思路+代码]
杀进程。杀掉父进程,那么父进程派生的所有子进程都需要被杀掉。给定一个数组,数组中的每两个数字表示是进程间的派生关系两两数字中,第一个数字表示是父进程,第二个表示子进程。如[1,2,3,4],表示是1是父进程,2是1派生的子进程,4是3派生的子进程。此时,要求杀死1,那么需要输出1,2。因为1派生了2,所以1被杀死,2也要被杀死。在入[1,2,2,3]杀死1的时候,输出1,2,3。因为1派生了2,1被杀死,2也要被杀死;2又派生了3,2被杀死,3也要被杀死。原创 2024-03-29 12:37:33 · 137 阅读 · 0 评论 -
【名企技术面手撕代码】最大子数组和 python代码实现
给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组 是数组中的一个连续部分。示例 1:输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组 [4,-1,2,1] 的和最大,为 6。示例 2:输入:nums = [1]输出:1示例 3:输入:nums = [5,4,-1,7,8]输出:23。原创 2024-03-09 17:07:01 · 77 阅读 · 0 评论 -
手撕代码题:数据流中的中位数 python C++ 【快排,堆排序】
题目描述如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。原创 2024-03-06 10:06:17 · 82 阅读 · 0 评论 -
【图的算法】深度优先,老鼠走迷宫,找到最短通路,C/C++代码实现
二维矩阵中,1表示“墙壁”与“障碍”、0表示“通路”。假设1只老鼠从起点出发,可向“上、下、左、右、右上、右下、左下、左上”等8个方向行走,一般的迷宫可以表示为一个二维平面模型,将迷宫的左上角作为入口,右下角作为出口,6. 如果每次探索的路径均为从起点到终点的最短路径,则负责程序设计的同学。4.如果有路径则利用二维数组输出路径、如果自动生成的迷宫无路径则系统输。要找到通路的情况下,找最短路径,就是步数最少的通路。3.迷宫可由系统自动生成也可由测试员进行输入;2.程序中需要有文字用户界面和必要的提示;原创 2024-01-16 15:30:35 · 407 阅读 · 0 评论 -
【校招笔试题】找8个小球的称量,次数最少,某仓库失窃,四个保管员因涉嫌而被传讯 【知名企业笔试题】
有8个看起来一样的小球 其中有一个缺陷球(比其他7个重些),通过一个天平,怎么称量?才能使称量次数最少的情况下,快速找到那个缺陷球?题目解析:这个题目考察的是能不能合理分配;答案:2次称量就可以找到目标缺陷球;第一次称量:分成3份:3,3,2,称量两个3,如果2个3一样重,缺陷求在2里面,如果不一样重,缺陷球在重的那个3里面第二次称量:是2:则分成 1,1是3:则分成1,1,1称其中2个1即可得到哪一个是缺陷球了。原创 2023-12-19 21:48:02 · 451 阅读 · 0 评论 -
手撕代码:合并K个升序链表 给你一个链表数组,每个链表都已经按升序排列 请你将所有链表合并到一个升序链表中 返回合并后的链表 用C++实现
合并K个升序链表 给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。原创 2023-12-16 19:11:29 · 461 阅读 · 0 评论 -
手撕代码题:三数之和,是否存在三元组 C++代码实现,采用双指针实现
给你一个整数数组 nums,判断是否存在三元组 [numsi,nums们l, nums[k]] 满足 i!=j、i!= k 且j!= k,同时还满足nums[i + numsm + nums[k]==0。请你返回所有和为 0 且不重复的三元组。输入: nums =[-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]输入: nums = [0,1,1]输出:[]输入: nums = [0,0,0]输出:[[0,0,0]]原创 2023-12-16 19:04:34 · 422 阅读 · 0 评论 -
【二叉树构建与输出】给定二叉树的前序、中序结果,输出后序遍历结果 C++代码实现
由二叉树的前序遍历结果和中序遍历结果来推导后序的遍历结果。有一棵二叉树,每个节点由一个大写字母标识(最多26个节点)。现有两组字母,分别表示前序遍历(父节点->左孩子->右孩子)和中序遍历(左孩子->父节点->右孩子)的结果,请你输出后序遍历(左孩子->右孩子->父节点)的结果。输入每个输入文件包含两串字母,各占一行。(每串只包含大写字母)第一行字母表示前序遍历结果,第二行字母表示中序遍历结果。输出输出仅一行,表示后序遍历的结果,结尾换行。原创 2023-12-08 17:33:37 · 528 阅读 · 0 评论 -
【逆向思维思考】称金子:大小和形状完全一样,其中一块略轻,3次找到最多是几块?当200块金子时,最多几次可以找到较轻的金子? 某知名企业笔试题
有一堆大小、形状完全一致的金子,其中一块略轻,其余重量完全一致。有一个没有刻度的天平,最多称3次可以找到重量略轻的金子。请问这堆金子最多有多少块?并简述原因。当有200块金子时,最多需要称重几次就可以找到较轻的金子?注意,不要直接写结果,需要写出分析过程!原创 2023-11-29 16:18:40 · 1026 阅读 · 0 评论 -
C/C++实现:二叉树染色:小扣有一个根结点为 root 的二叉树模型,初始所有结点均为白色,可以用蓝色染料给模型结点染色,模型的每个结点有一个 val 价值 某知名企业笔试题
小扣有一个根结点为 root 的二叉树模型,初始所有结点均为白色,可以用蓝色染料给模型结点染色,模型的每个结点有一个 val 价值。输入:root = [4,1,3,9,null,null,2], k = 2。解释:结点 5、3、4 染成蓝色,获得最大的价值 5+3+4=12。解释:结点 4、3、9 染成蓝色,获得最大的价值 4+3+9=16。输入:root = [5,2,3,4], k = 2。原创 2023-11-24 21:57:04 · 450 阅读 · 0 评论 -
C/C++实现:找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和 某知名企业笔试题
给你一个整数数组nums,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。是数组中的一个连续部分。原创 2023-11-24 21:23:58 · 566 阅读 · 0 评论 -
C/C++ 实现:写一个C/C++程序,将字符串”abcdef”反转 某知名公司笔试题
可以考虑将左右进行交换,采用双指针的方式实现,一个位于字符串头部,一个位于字符串尾部,然后相向而行即可。题目要求使用到指针,说白了,就得需要用传进来的一个字符串指针实现操作。1.实现一个用于字符串反转的函数,在主函数里调用这个函数,以得到一个新的字符串。写一个C/C++程序,将字符串”abcdef”反转,要求。3.在主函数里打印出必要的信息。2.需要使用到指针;原创 2023-11-24 15:27:58 · 515 阅读 · 0 评论 -
C/C++实现:使用单向循环链表实现:编写相关函数来完成两个超长正整数的加法 某知名公司笔试题
这里采用一个带有表头结点的环形链表来表示一个超长的正整数,表头结点的值规定为-1,如果从低位开始为每个数字编号,则第一位到第四位、第五位到第八位...的每四位组成的数字,依次放在链表的结点中,不足4位的最高位存放在链表的最后一个结点中。先把相同的位置加起来,要考虑进位的问题,同时是按4个数来加的,进位得对10000整除,/* 进行加法操作,返回指向累加结果的指针*/不同位置的话,就得考虑2个链表,哪个长都得单独处理一下,最终返回保存结果的链表即可。返回指向累加结果的指针 (累加结果保存在新由请的链表中)原创 2023-11-22 12:24:13 · 178 阅读 · 0 评论 -
C/C++ 实现:自然排序:针对两个需要排序的字符串,不仅逐个比较每个字符的顺序,对于连在一起的数字字符会作为一个完整数字进行比较 某知名企业的笔试题
自然排序是指:针对两个需要排序的字符串,不仅逐个比较每个字符的顺序,对于连在一起的数字字符会作为一个完整数字进行比较,如Windows的资源管理器中对于文件名称的排序方式就是自然排序。按题意来处理即可,首先要处理好非数字部分,默认先按字母来处理,当遇到数字之后,再单独处理即可,因为要考虑相等的情况,默认返回 1 即可。示例输入: [file011, file1, file12, file2, file21, file22, file3]下面是一个自然排序函数的声明,请实现该函数;原创 2023-11-22 11:51:19 · 274 阅读 · 0 评论 -
C/C++ 实现:字符串处理函数:将字符串中的字符“*移到串的前部分,前面的非“*“字符后移,但不能改变非*字符的先后顺序,函数返回串中字符”的数量 某知名企业笔试题
函数将字符串中的字符“*移到串的前部分,前面的非"*"字符后移,但不能改变非*字符的先后顺序,函数返回串中字符”的数量。如原始串为: ab**cd**e*12处理后为*****abcde12,函数并返回值为5。要求使用尽量少的时间和辅助空间。因为题目需要把*号挪到前面,那我们完全可以考虑把非*号的字符往后移,然后剩下的前面的内容直接使用*号来覆盖即可。那就得尽量只使用一层循环搞定,并且直接在原字符串上进行操作即可;原创 2023-11-22 11:34:28 · 118 阅读 · 0 评论 -
C++实现:根据二叉树的前序遍历与中序遍历恢复二叉树 某知名公司笔试题
给两个数组,一个为preorder,为二又树的前序遍历结果,另一个为inorder,为又树的中序遍历结果,根据该二叉树的前序与中序遍历结果,恢复其二叉树结构,给定的数组中保证可以建立合法的二叉树,且二叉树的每个节点的值唯。其实就是通过前序结果和中序结果推导构建二叉树,前序确定根节点,中序确定顺序,确定节点的相对位置,然后使用递归的方式来构建树即可。根据二叉树的前序遍历与中序遍历恢复二叉树。原创 2023-11-21 11:13:49 · 433 阅读 · 0 评论 -
C++实现:实现一个函数,接受一个n x n的矩阵并返回其行列式的值 某知名上市公司笔试题
通过将问题简化为 n 个大小为 n-1xn-1的矩阵的行列式来计算,可以计算 nxn 矩阵的行列式。其中 det(a minor)表示去掉元案a所在的行和列后,得到 2x2 矩阵的行列式。对于 3x3 矩阵而言[ [a, b, c][d, e, f,[g,h,i]的行列式为。使用递归的思路,来依次求子式行列式,最终就会得到一个值作为结果。2x2 矩阵 [ la, bl,[c, d]]的行列式为 ad。实现一个函数,接受一个nx n的矩阵并返回其行列式。1x1 矩阵 al 的行列式为 a。原创 2023-11-21 11:01:04 · 811 阅读 · 0 评论 -
C++实现:单词首字母改成大写 某知名公司笔试题
Will Smith 的儿子Jaden Smith,因出演电影也成为了明星,他同时也因在推特中传播的哲学而众所周知。在编写推特时他总会将每个单词的首字母大写。你的任务是将Jaden Smith 编写的信息转换,因为 Jaden Smith 编写这些信息的时候并没有将单词的首字母大写。由于字符串是空格分隔的,只需要对空格进行分割即可得到每个字符串,然后依次对首字母进行判断处理转成大写即可。输入:''most trees are blue"输出:"Most Trees Are Blue''原创 2023-11-21 10:24:16 · 271 阅读 · 0 评论 -
碰到多线程同步问题,解决掉,3条线程同步处理,mutex+condition_variable
每隔100毫秒对数组进行数据写入,从下标0开始写入,每次写入新数据,都会触发线程2、3的操作。延申:由于要使用条件变量,需要加条件来处理,需要使用唯一锁来进行等待。多线程项目要求: 需要3条线程实现对一个长度为20的整型数组进行数据写入及触发输出。读取有两种情况:直接获取值,输出;直接获取值,进行平方运算后输出;当有数据写入数组时,就会触发输出当前下标对应的写入值。当有数据写入数组时,将写入的数据取出,输出其平方值。需要3条线程,那就得3个对应的线程函数体;写入是一种情况,并且要定时写入;原创 2023-11-10 18:32:36 · 676 阅读 · 1 评论