自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 收藏
  • 关注

原创 华为算法刷题 63 MP3光标位置

同样的,屏幕显示最后一页时,光标在最后一首歌曲上,用户按Down键,屏幕要显示第一页,光标挪到第一首歌上。一开始不知怎么输出显示屏的数字,最后想了一下借助U、D两种情况很容易可以输出,具体思路是当命令为U时,判断子函数输出的数字x与origin数组的第一位的大小关系,如果x大,说明U后跳到了最后一首歌曲,如果x小,则将origin数组整体前提一位。一般翻页:屏幕显示的不是第一页时,光标在当前屏幕显示的第一首歌曲时,用户按Up键后,屏幕从当前歌曲的上一首开始显示,光标也挪到上一首歌曲。2 输出当前选中歌曲。

2023-10-08 20:56:18 57

原创 华为算法刷题65 查找两个字符串a,b中的最长公共子串

寻找相同子串:取一个从0开始的变量n,判断当s[i+n]==l[j+n]成立时,n自增即可。注意在j循环(内圈循环结束后n要置零)。首先要挑选出两个字符串中较短的那个,要输出较短字符串先出现的最长子串,在遍历循环时,短字符串做外圈循环,长字符串做内圈循环即可。注:子串的定义:将一个字符串删去前缀和后缀(也可以不删)形成的字符串。查找两个字符串a,b中的最长公共子串。若有多个,输出在较短串中最先出现的那个。进阶:时间复杂度:O(n3) ,空间复杂度:O(n)数据范围:字符串长度 1≤length≤300。

2023-10-08 20:26:03 66

原创 华为算法刷题 59 查找组成一个偶数最接近的两个素数

任意一个偶数(大于2)都可以由2个素数组成,组成偶数的2个素数有很多种情况,本题目要求输出组成指定偶数的两个素数差值最小的素数对。先写一个子函数,判断这个数是否为素数,再用min循环获得素数差值最小的素数对。数据范围:输入的数据满足 4≤n≤1000。输入一个大于2的偶数。从小到大输出两个素数。

2023-10-05 08:40:47 61

原创 华为算法刷题 58

数据范围:输入的字符串长度满足1≤n≤1000。输出第一个只出现一次的字符,如果不存在输出-1。记第一次中等难度题一遍过,耗时17分钟!找出字符串中第一个只出现一次的字符。输入:asdfasdfo。

2023-09-26 20:32:01 45

原创 华为算法刷题 31 密码截取

当两位不相邻的数相当时,判断内部的两位数dp值是否为1,比如str[0]=str[7],会判断dp[1][6]是否为1,如果dp[1][6]为1,说明str[2]=str[5],str[3]=str[4];即str[i]=str[j]&&dp[j+1][i-1]为1时,dp[j][1]=1,从str[j]到str[i]均是回文数。思路是,j从0加到n,i从0加到len,dp[][]=1代表可以继续向下求回文串;输入一个字符串(字符串的长度不超过2500)数据范围:字符串长度满足1≤n≤2500。

2023-09-25 21:08:34 24

原创 华为算法刷题 90 走方格的方案数

请计算n*m的棋盘格子(n为横向的格子数,m为竖向的格子数)从棋盘左上角出发沿着边缘线从左上角走到右下角,总共有多少种走法,要求不能走回头路,即:只能往右和往下走,不能往左和往上走。可以发现dp[n][m]=dp[n-1][m]+dp[n][m-1],而且当n=0或者m=0时,dp[n][m]=1;有两行一列共两个格子时,可以从上面格子右下角过来,也可以走新路线,从前面格子左下角过来。当有2行2列格子时,可以从(1,2)格子右下角过来,也可以从(2,1)格子右下角过来,共3+3=6条。

2023-09-23 17:04:09 72

原创 华为算法刷题 54 挑7

一个数与7有关是指这个数是 7 的倍数,或者是包含 7 的数字(如 17 ,27 ,37 ... 70 ,71 ,72 ,73...)最初想从个位逐渐往上走,去判断各位是否有7,结果发现从最高位往个位走才是正确的,否则会漏情况。说明:输入20,1到20之间有关的数字包括7,14,17共3个。( n 不大于 30000 )一个整数,表示1到n之间的与7有关的数字个数。输出 1到n之间 的与 7 有关数字的个数。数据范围:1≤n≤30000。

2023-09-23 16:51:06 25

原创 华为算法刷题 23 合唱队

K ,他们的身高分别为1,2,…,TK​ ,若存在i(1≤i≤K) 使得T1​<T2​<......<Ti−1​<Ti​ 且Ti​>Ti+1​>......>TK​,则称这K名同学排成了合唱队形。j=0时,如果s[i]>s[j],相当于可以组成2人的序列了,所以left[i]先得到left[j]的值,再在循环后加上自己;你的任务是,已知所有N位同学的身高,计算最少需要几位同学出列,可以使得剩下的同学排成合唱队形。N 位同学站成一排,音乐老师要请最少的同学出列,使得剩下的 K 位同学排成合唱队形。

2023-09-22 23:12:58 21

原创 华为算法刷题 44 名字的漂亮度

2.扫掠哈希数组,从次数出现的最大值开始,每当有元素的值等于最大值,count+=出现次数*x,x是由26开始,每乘一次减小1的值。对于样例lisi,让i的漂亮度为26,l的漂亮度为25,s的漂亮度为24,lisi的漂亮度为25+26+24+26=101.每个字母都有一个“漂亮度”,范围在1到26之间。给出一个字符串,该字符串仅由小写字母组成,定义这个字符串的“漂亮度”是其所有字母“漂亮度”的总和。给出多个字符串,计算每个字符串最大可能的“漂亮度”。数据范围:输入的名字长度满足 1≤n≤10000。

2023-09-22 20:43:12 58

原创 华为算法刷题 19 密码验证合格程序

3.不能有长度大于2的包含公共元素的子串重复 (注:其他符号不含空格或换行)2.包括大小写字母.数字.其它符号,以上四种至少三种。数据范围:输入的字符串长度满足 1≤n≤100。如果符合要求输出:OK,否则输出NG。三个子函数,在主函数判断即可。

2023-09-20 22:13:42 32 1

原创 华为算法刷题 16 坐标移动

开发一个坐标计算工具, A表示向左移动,D表示向右移动,W表示向上移动,S表示向下移动。从(0,0)点开始移动,从输入字符串里面读取一些坐标,并将最终输入结果输出到输出文件里面。数据范围:每组输入的字符串长度满足 1≤n≤10000 ,坐标保证满足 −231≤x,y≤231−1 ,且数字部分仅含正数。合法坐标为A(或者D或者W或者S) + 数字(两位以内)+ B10A11 = 无效。+ A1A = 无效。+ x = 无效。结果 (10, -10)最终坐标,以逗号分隔。

2023-09-20 20:48:33 33 1

原创 华为算法刷题 25

我的思路是,首先将数组里的字母提取出来,按顺序排成一个新数组,输出的时候判断原数组的元素,如果为字母,输出新数组的字母,如果为其他符号,输出原数组元素。规则 2 :同一个英文字母的大小写同时存在时,按照输入顺序排列。规则 1 :英文字母从 A 到 Z 排列,不区分大小写。编写一个程序,将输入字符串中的字符按如下规则排序。数据范围:输入的字符串长度满足 1≤n≤1000。规则 3 :非英文字母的其它字符保持原来的位置。如,输入: Type 输出: epTy。如,输入: BabA 输出: aABb。

2023-09-20 19:38:56 25 1

原创 华为算法刷题 22 删除字符串中出现次数最少的字符

2,又看了一下正儿八经的哈希解法:设置一个哈希数组,应保证有97~123的对应空位,对应a~z的ascii码值,扫描输入的字符串,字母出现一次,哈希数组对应位置+1。再次扫描输入的字符串,如果字母对应的哈希数组中数字为非零的最小值,则不输出。1.用自己的笨办法(不过有点哈希的意思),给一个二维数组,第一列为0~25 代表a~z,扫描字符串,字母出现一次,二维数组中的第二列会对应+1。实现删除字符串中出现次数最少的字符,若出现次数最少的字符有多个,则把出现次数最少的字符都删除。输入:aabcddd。

2023-09-19 22:11:58 21

原创 华为算法刷题 21 汽水瓶

输入文件最多包含 10 组测试数据,每个数据占一行,仅包含一个正整数 n( 1<=n<=100 ),表示小张手上的空汽水瓶数。样例 2 解释:用九个空瓶换三瓶汽水,剩四个空瓶再用三个空瓶换一瓶汽水,剩两个空瓶,向老板借一个空瓶再用三个空瓶换一瓶汽水喝完得一个空瓶还给老板。一看到题觉得挺麻烦的,至少要套n个判断才做得出,结果找规律的时候发现随机取数的结果都是x/2,就解出来了。对于每组测试数据,输出一行,表示最多可以喝的汽水瓶数。如果一瓶也喝不到,输出0。输入的 0 表示输入结束,并不用输出结果。

2023-09-19 20:36:17 21

原创 华为算法刷题 20 简单密码

九键手机键盘上的数字与字母的对应: 1--1, abc--2, def--3, ghi--4, jkl--5, mno--6, pqrs--7, tuv--8 wxyz--9, 0--0,把密码中出现的小写字母都变成九键键盘对应的数字,如:a 变成 2,x 变成 9.而密码中出现的大写字母则变成小写之后往后移一位,如:X ,先变成小写,再往后移一位,变成了 y ,例外:Z 往后移是 a。数据范围: 输入的字符串长度满足 1≤n≤100。输入一组密码,长度不超过100个字符。数字和其它的符号都不做变换。

2023-09-18 23:08:03 68

原创 华为算法刷题13 求int型正整数在内存中存储时1的个数

其实思路都一样的,最大32位,我就从32位开始除,能除动就给1,除不动就给0,除动后将原数字减去除动的数字,继续向后除。输入一个 int 型的正整数,计算出该 int 型数据在内存中存储时 1 的个数。题比较简单,只让提1的个数,没让把二进制写出来。数据范围:保证在 32 位整型数字范围内。这个数转换成2进制后,输出1的个数。输入一个整数(int类型)

2023-09-18 22:45:21 27

原创 华为算法刷题12 字符串排序

输入第一行为一个正整数n(1≤n≤1000),下面n行为n个字符串(字符串长度≤100),字符串中只含有大小写字母。一开始感觉很复杂,看到大家解题用到strcmp,豁然开朗,再使用冒泡法即可解出。数据范围: 1≤n≤1000 ,字符串长度满足1≤len≤100。给定 n 个字符串,请对 n 个字符串按照字典序排列。数据输出n行,输出结果为按照字典序排列的字符串。

2023-09-18 22:26:09 46

原创 华为算法刷题 11 句子逆序

将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I”我的思路是:给一个数组把每个空格的位置取出来,通过循环打印两个空格之间的字母,两端单独写。所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符。输入一个英文语句,每个单词用空格隔开。保证输入只包含空格和字母。今天悟出一个重要收获,可以写一点调试一点,比较省时间。数据范围:输入的字符串长度满足 1≤n≤1000。输入:I am a boy。输出:boy a am I。

2023-09-18 22:23:50 21

原创 华为算法刷题10 字符串反转

接受一个只包含小写字母的字符串,然后输出该字符串反转后的字符串。(字符串长度不超过1000)输入一行,为一个只包含小写字母的字符串。输出该字符串反转后的字符串。

2023-09-18 21:14:43 20

原创 华为算法刷题 09 字符个数统计

编写一个函数,计算字符串中含有的不同字符的个数。字符在 ASCII 码范围内( 0~127 ,包括 0 和 127 ),换行表示结束符,不算在字符里。不在范围内的不作统计。多个相同的字符只计算一次。例如,对于字符串 abaca 而言,有 a、b、c 三种不同的字符,因此输出 3。输出 输入字符串 中范围在(0~127,包括0和127)字符的种数。数据范围:1≤n≤500。输入一行没有空格的字符串。

2023-09-17 22:31:35 17 1

原创 华为算法刷题 08 提取不重复的整数

输入一个 int 型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。以后碰到去重复数,不折腾了,老老实实往前移位吧。按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。入门级难度,做了一个多小时,懵逼了。保证输入的整数最后一位不是 0。数据范围:1≤n≤108。输入一个int型整数。输入:9876673。

2023-09-17 22:29:42 14 1

原创 华为算法刷题 07 合并表记录

数据表记录包含表索引index和数值value(int范围的正整数),请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照index值升序进行输出。

2023-09-17 19:49:15 23 1

原创 华为算法刷题 06 取近似值

写出一个程序,接受一个正浮点数值,输出该数值的近似整数值。如果小数点后数值大于等于 0.5 ,向上取整;小于 0.5 ,则向下取整。数据范围:保证输入的数字在 32 位浮点数范围内。没啥说的 希望机试能抽到。输出该数值的近似整数值。

2023-09-17 12:04:26 32 1

原创 华为算法刷题 05 质数因子

2.如果按照180的分解思路,应该给一个i,从i=2开始,num(180)开始除i,如果去余为零,则num/=i,然后每次取余为零,则输出一个i;矛盾在于,for循环中的判断条件,肯定有类似i<num的语句,而num在循环中是不断减小的。功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如180的质因子为2 2 3 3 5 )按照从小到大的顺序输出它的所有质数的因子,以空格隔开。3.碰到质数,循环走不通,无输出值,需最后输出本身。输出:2 2 3 3 5。

2023-09-17 11:21:48 31 1

原创 华为算法刷题04 进制转换

我的思路是通过取输出字符的ASCII值,减去ASCII表中‘0’或‘A’的基础值,对应乘16^n次方。写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。输出该数值的十进制字符串。不同组的测试用例用\n隔开。数据范围:保证结果在1≤n≤231−1。输入一个十六进制的数值字符串。

2023-09-17 10:05:46 38 1

原创 华为算法刷题03 字符串分隔

•输入一个字符串,请按长度为8拆分每个输入字符串并进行输出;•长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。代码如下:不知为何有一组例子死活过不去,求大家指点。连续输入字符串(每个字符串长度小于等于100)依次输出所有分割后的长度为8的新字符串。2.长度大于8 长度%8非零;3.长度大于8 长度%8为零。题比较简单,分三种情况,输出:abc00000。1.长度小于等于8;

2023-09-14 20:48:11 30 1

原创 华为算法刷题01 计算某字符出现次数

gets()函数读取到\n(我们输入的回车)于是停止读取,但是它不会把\n包含到字符串里面去。然而,和它配合使用的puts函数,却在输出字符串的时候自动换行;写出一个程序,接受一个由字母、数字和空格组成的字符串,和一个字符,然后输出输入字符串中该字符的出现次数。第一行输入一个由字母、数字和空格组成的字符串,第二行输入一个字符(保证该字符不为空格)。scanf("%[^\n]",str)表示读入换行符就结束读入;ASCII表中 'A'=65,'a'=97;'a'='A'+32。数据范围:1≤n≤1000。

2023-09-13 22:11:16 22 1

原创 华为算法刷题00:字符串最后一个单词的长度

计算字符串最后一个单词的长度,单词以空格隔开,字符串长度小于5000。(注:字符串末尾不以空格为结尾)输入一行,代表要计算的字符串,非空,长度小于5000。复制说明:最后一个单词为nowcoder,长度为8。输出一个整数,表示输入字符串最后一个单词的长度。输入:hello nowcoder。

2023-09-13 21:28:21 60 1

原创 stm32 SPI中TXE与RXNE为1时的理解

TXE=1,可以理解为:发送缓冲区收到的Byte送入移位寄存器中,移位寄存器在一Bit一Bit的向外发送,即此时移位寄存器非空,而发送缓冲区为空,无数据可发送;RXNE=1,可以理解为:移位寄存器收到的Byte送入接收缓冲区,接收缓冲区非空,没有可以继续存放数据的区域,若不及时将缓冲区的数据读出可能就会被覆盖掉。

2023-09-12 21:23:59 800

空空如也

空空如也

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

TA关注的人

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