刷题cpp
cpp永远的神
四库全书的酷
格物致知,所有未知都可变成已知!
展开
-
华为面试题: 没有回文串
【没有回文串】回文串的定义:正读和反读都一样的字符串现在已经存在一个不包含回文串的字符串,字符串的字符都是在英语字母的前N个,且字符串不包含任何长度大于等于2的回文串;请找出下一个字典序的不包含回文串的、字符都是在英语字母的前N个、且长度相同的字符串。如果不存在,请输出NO。示例1:输入:输出:示例2:输入:输出:...原创 2022-07-01 13:54:04 · 1197 阅读 · 1 评论 -
华为面试题: 招聘
某公司组织一场公开招聘活动,假设由于人数和场地的限制,每人每次面试的时长不等,并已经安排给定,用 (S1, E1)、 (S2, E2)、 (Sj,Ej)…(Si < Ei ,均为非负整数 )表示每场面试的开始和结束时间。面试采用一对一的方式,即一名面试官同时只能面试一名应试者,一名面试官完成一次面试后可以立即进行下一场面试,且每个面试官的面试人次不超过 m 。为了支撑招聘活动高效顺利进行,请你计算至少需要多少名面试官。示例1输入输出示例2输入输出示例3输入输出分析首先进行一下排序,然原创 2022-07-01 10:48:32 · 2787 阅读 · 2 评论 -
华为面试题: 分糖果
小明从糖果盒中随意抓一把糖果每次小明会取出一半的糖果分给同学们当糖果不能平均分配时小明可以从糖果盒中(假设盒中糖果足够)取出一个或放回一个糖果小明至少需要多少次(取出放回和平均分配均记一次)能将手中糖果分至只剩一颗代码注意点:是统计取回和放进去的次数!!...原创 2022-06-27 21:34:03 · 542 阅读 · 0 评论 -
华为面试题: 高矮个子排队
现在有一队小朋友,他们高矮不同,我们以正整数数组表示这一队小朋友的身高,如数组{5,3,1,2,3}。我们现在希望小朋友排队,以“高”“矮”“高”“矮”顺序排列,每一个“高”位置的小朋友要比相邻的位置高或者相等;每一个“矮”位置的小朋友要比相邻的位置矮或者相等;要求小朋友们移动的距离和最小,第一个从“高”位开始排,输出最小移动距离即可。例如,在示范小队{5,3,1,2,3}中,{5, 1, 3, 2, 3}是排序结果。{5, 2, 3, 1, 3} 虽然也满足“高”“矮”“高”“矮”顺序排列,原创 2022-06-27 21:26:17 · 1492 阅读 · 0 评论 -
华为面试题:和为K的子数组
和为K的子数组原创 2022-06-07 15:38:30 · 123 阅读 · 0 评论 -
华为面试题:阶乘后的0
阶乘后的0原创 2022-06-07 10:33:55 · 108 阅读 · 0 评论 -
华为面试题:交错字符串
给定三个字符串 s1、s2、s3,请你帮忙验证 s3 是否是由 s1 和 s2 交错 组成的。两个字符串 s 和 t 交错 的定义与过程如下,其中每个字符串都会被分割成若干 非空 子字符串:交错 是 s1 + t1 + s2 + t2 + s3 + t3 + … 或者 t1 + s1 + t2 + s2 + t3 + s3 + …注意:a + b 意味着字符串 a 和 b 连接。示例 1:示例 2:示例 3:提示:链接:https://leetcode.cn/problems/interleavin翻译 2022-06-06 11:38:45 · 242 阅读 · 0 评论 -
华为面试题: 砌墙
文章目录题目代码注意点与分析链接题目你的面前有一堵矩形的、由 n 行砖块组成的砖墙。这些砖块高度相同(也就是一个单位高)但是宽度不同。每一行砖块的宽度之和相等。你现在要画一条 自顶向下 的、穿过 最少 砖块的垂线。如果你画的线只是从砖块的边缘经过,就不算穿过这块砖。你不能沿着墙的两个垂直边缘之一画线,这样显然是没有穿过一块砖的。给你一个二维数组 wall ,该数组包含这堵墙的相关信息。其中,wall[i] 是一个代表从左至右每块砖的宽度的数组。你需要找出怎样画才能使这条线 穿过的砖块数量最少 ,并原创 2022-05-31 16:01:33 · 357 阅读 · 0 评论 -
华为面试题:括号生成
文章目录题目代码链接:题目数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例 1:输入:n = 3输出:["((()))","(()())","(())()","()(())","()()()"]示例 2:输入:n = 1输出:["()"]提示:1 <= n <= 8代码递归实现排列组合class Solution { int left; int right; vector<string原创 2022-05-31 15:22:21 · 165 阅读 · 0 评论 -
华为面试题:最大数
文章目录题目代码注意点链接:题目给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。注意:输出结果可能非常大,所以你需要返回一个字符串而不是整数。示例 1:输入:nums = [10,2]输出:"210"示例 2:输入:nums = [3,30,34,5,9]输出:"9534330"提示:1 <= nums.length <= 1000 <= nums[i] <= 10^9代码class Solution {原创 2022-05-31 15:06:48 · 388 阅读 · 0 评论 -
华为面试题:加湿器的布置
文章目录题目代码注意点index的迭代链接题目冬季已经来临。 你的任务是设计一个有固定加热半径的供暖器向所有房屋供暖。在加热器的加热半径范围内的每个房屋都可以获得供暖。现在,给出位于一条水平线上的房屋 houses 和供暖器 heaters 的位置,请你找出并返回可以覆盖所有房屋的最小加热半径。说明:所有供暖器都遵循你的半径标准,加热的半径也一样。示例 1:输入: houses = [1,2,3], heaters = [2]输出: 1解释: 仅在位置2上有一个供暖器。如果我们将加热原创 2022-05-31 11:59:26 · 129 阅读 · 0 评论 -
华为面试题:自守数
文章目录题目分析代码题目描述自守数是指一个数的平方的尾数等于该数自身的自然数。例如:25^2 = 625,76^2 = 5776,9376^2 = 87909376。请求出n(包括n)以内的自守数的个数数据范围: 1≤n≤10000输入描述:int型整数输出描述:n以内自守数的数量。示例1输入:6输出:4说明:有0,1,5,6这四个自守数 示例2输入:1输出:2说明:有0, 1这两个自守数 分析求自守数的解题思路规律:个位数为 0、1原创 2022-05-22 00:02:00 · 572 阅读 · 0 评论 -
华为面试题: 最大数
文章目录题目题解leetcode链接:addr题目给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。注意:输出结果可能非常大,所以你需要返回一个字符串而不是整数。示例 1:输入:nums = [10,2]输出:"210"示例 2:输入:nums = [3,30,34,5,9]输出:"9534330"提示:1 <= nums.length <= 1000 <= nums[i] <= 109来源:力扣(LeetCod原创 2022-05-21 10:56:19 · 119 阅读 · 0 评论 -
华为面试题:完全数定义与欧拉公式求解完全数
文章目录题目完全数定义与计算(欧拉)代码题目完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。例如:28,它有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加,1+2+4+7+14=28。输入n,请输出n以内(含n)完全数的个数。数据范围: 1≤n≤5×10^5输入描述:输入一个数字n输出描述:输出不超过n的完全数的个数示例1输入:1000输出:3完全数原创 2022-05-20 16:54:34 · 416 阅读 · 0 评论 -
华为面试题: 杨辉三角形的变形
文章目录题目解题思路代码题目以上三角形的数阵,第一行只有一个数1,以下每行的每个数,是恰好是它上面的数、左上角数和右上角的数,3个数之和(如果不存在某个数,认为该数就是0)。求第n行第一个偶数出现的位置。如果没有偶数,则输出-1。例如输入3,则输出2,输入4则输出3,输入2则输出-1。数据范围: 1 ≤ n ≤10^9输入描述:输入一个int整数输出描述:输出返回的int值示例1输入:4输出:3解题思路写几行就可以发现规律://n==1或2时,没有偶数,cout&原创 2022-05-20 15:28:46 · 300 阅读 · 0 评论 -
下一个排列
文章目录题目解题代码总结题目整数数组的一个 排列 就是将其所有成员以序列或线性顺序排列。例如,arr = [1,2,3] ,以下这些都可以视作 arr 的排列:[1,2,3]、[1,3,2]、[3,1,2]、[2,3,1] 。整数数组的 下一个排列 是指其整数的下一个字典序更大的排列。更正式地,如果数组的所有排列根据其字典顺序从小到大排列在一个容器中,那么数组的 下一个排列 就是在这个有序容器中排在它后面的那个排列。如果不存在下一个更大的排列,那么这个数组必须重排为字典序最小的排列(即,其元素按升原创 2022-04-20 15:52:18 · 97 阅读 · 0 评论 -
木板倒水问题--单调栈 解决方法
代码如下:#include <stdio.h>#include <stdlib.h>#define ERROR 0#define OK 1typedef struct Node { int id, height;} Node;typedef struct Stack { Node *elements; int max_size, top_index;} Stack;void init(Stack *s, int length) {..原创 2021-08-02 21:38:33 · 134 阅读 · 0 评论 -
逆波兰式-C++实现方法
转化过程利用了栈的先进后出的特性1.创建两个栈s1,s2s1用来存储运算符s2用来存储中间结果2.将中缀表达式的字符按照规则存入s1和s2规则:1)当遇到数字时,将其存入s2中2)当遇到表达式的运算符时,让其之前已经存入s1栈顶的运算符比较优先级(1) 若运算符比栈顶的运算符优先级低或是等于就将栈顶的运算符出栈并入栈到s2中,然后继续比较现在出栈过后的s1的栈顶与表达式运算符的优先级,继续完成同上所述操作;直到遇到了比表达式运算符低的栈顶时,便将表达式的运算符存入s1中,继续遍历表达式的下一翻译 2021-08-02 21:54:22 · 1585 阅读 · 0 评论 -
素数判断-素数筛方法和线性筛方法
素数:一个不能被除了1和其本身之外的数整除的数叫做素数。我们常用的方法就是暴力判断:#include<stdio.h>#include<stdbool.h>bool is_prime(int n){ for (int i = 2; i < n; i++){ if (n % i == 0) return 0; } return false;}其实还有更加优秀的方法:1、素数筛方法代码如下:bool number[maxn + 5];//记录下标是原创 2021-08-02 22:13:56 · 98 阅读 · 0 评论 -
二叉树——从中序与后序遍历序列构造二叉树
这里写自定义目录标题从中序与后序遍历序列构造二叉树题目题目理解代码实现总结从中序与后序遍历序列构造二叉树基础首先要掌握二叉树的前序、中序、后续遍历,理解递归在二叉树操作中的重要地位,熟悉分治法在解决实际问题中的广泛应用。题目给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。示例 1:输入:inorder = [9,3,15,20,7], postorder = [9,1原创 2022-02-12 10:39:00 · 846 阅读 · 0 评论 -
二叉树——从前序与中序遍历序列构造二叉树
从前序与中序遍历序列构造二叉树题目题目理解代码实现总结基础首先要掌握二叉树的前序、中序、后续遍历,理解递归在二叉树操作中的重要地位,熟悉分治法在解决实际问题中的广泛应用。题目给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。示例 1:输入: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7]输出: [3,9,20,null,nul原创 2022-02-12 11:25:02 · 1088 阅读 · 0 评论 -
二叉树——二叉树的最近公共祖先
二叉树的最近公共祖先前言题目思路代码结论前言解决公共祖先问题时我想到的办法时两次遍历,分别在树tree中遍历p和q,两次的遍历中从根到目标节点的路径节点指针的值分别保存到集合和队列中,在队列出队时制药在集合中出现过,那他就是最近公共祖先。这个方法也能AC。但是时间和空间消耗巨大。借鉴了一下精选接法,才明白对于二叉树的递归还是内有熟练应用。题目给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点原创 2022-02-12 13:56:26 · 504 阅读 · 0 评论 -
约瑟夫环的实现
前言约瑟夫环实质上是一个循环链表。这个问题源于犹太历史学家约瑟夫。问题描述:编号为 1-N 的 N 个士兵围坐在一起形成一个圆圈,从编号为 1 的士兵开始依次报数(1,2,3…这样依次报),数到 m 的士兵会被杀死出列,之后的士兵再从 1 开始报数。直到最后剩下一士兵,求这个士兵的编号。代码块如下:#include <stdio.h>#include <stdlib.h>//定义一个结构体:顺序表typedef struct Node{ int dat原创 2021-08-02 21:32:07 · 204 阅读 · 0 评论