
牛客网
小米内推官_AngelDg
我们总以为,是生活欠我们一个“满意”,其实是我们欠生活一个“努力”。
展开
-
[剑指Offer]:机器人的运动范围(回溯算法)
文章目录题目描述题解思路:题目描述地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?示例1输入5,10,10返回值21题解思路:1.从(0,0)开始走,每成功走一步标记当前位置为true,然后从原创 2020-12-08 10:35:19 · 188 阅读 · 0 评论 -
[剑指Offer]:矩阵中的路径(回溯算法)
文章目录题目描述解题思路: 回溯算法题目描述请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如[abcesfcsadee] \left[ \begin{matrix} a & b & c & e \\ s & f & c & s \\ a &am原创 2020-12-04 09:57:25 · 281 阅读 · 0 评论 -
[每日一题]103:二叉树中和为某一值的路径
题目描述给定一个二叉树和一个值 sum,判断是否有从根节点到叶子节点的节点值之和等于 sum 的路径,例如:给出如下的二叉树,sum=22,返回true,因为存在一条路径 5→4→11→2的节点值之和为 22示例1输入{1,2},0输出false示例2输入{1,2},3输出true解答代码:bool hasPathSum(TreeNode* root, int sum) { if (nullptr == root) return false;原创 2020-10-03 23:12:19 · 248 阅读 · 0 评论 -
[每日一题]102:统计一组数据中出现次数最多的数字
题目描述统计一组数值数据中出现次数最多的数值示例:输入[ 1, 3, 4, 5, 6, 1, 7 ]输出1说明:如果出现相同次数的数值,返回第一个出现的数值解答代码#include <vector>#include <map>#include <iostream>using namespace std;int find(vector<int>& datas) { map<int, int> m;原创 2020-10-01 15:36:14 · 1688 阅读 · 0 评论 -
[每日一题]95:数字字符替换(深信服08-25)
题目描述输入一个仅含数字的字符串,再输入一个n。表示有n个字符替换(a, b)示例:输入:02368330924 20 22 3输出:33368333934不能用暴力解法#include <iostream>#include <string>#include <vector>using namespace std;int main() { string s; getline(cin, s); int n, a, b; cin &原创 2020-08-26 01:00:53 · 303 阅读 · 0 评论 -
[每日一题]83:分苹果(贪心)
题目描述n 只奶牛坐在一排,每个奶牛拥有 ai 个苹果,现在你要在它们之间转移苹果,使得最后所有奶牛拥有的苹果数都相同,每一次,你只能从一只奶牛身上拿走恰好两个苹果到另一个奶牛上,问最少需要移动多少次可以平分苹果,如果方案不存在输出 -1。输入描述:每个输入包含一个测试用例。每个测试用例的第一行包含一个整数 n(1 <= n <= 100),接下来的一行包含 n 个整数 ai(1 <= ai <= 100)。输出描述:输出一行表示最少需要移动多少次可以平分苹果,如果方案不存原创 2020-08-08 14:53:50 · 407 阅读 · 0 评论 -
[每日一题]82:光标位置
题目描述MP3 Player因为屏幕较小,显示歌曲列表的时候每屏只能显示几首歌曲,用户要通过上下键才能浏览所有的歌曲。为了简化处理,假设每屏只能显示4首歌曲,光标初始的位置为第1首歌。现在要实现通过上下键控制光标移动来浏览歌曲列表,控制逻辑如下:歌曲总数<=4的时候,不需要翻页,只是挪动光标位置。光标在第一首歌曲上时,按Up键光标挪到最后一首歌曲;光标在最后一首歌曲时,按Down键光标挪到第一首歌曲。其他情况下用户按Up键,光标挪到上一首歌曲;用户按Down键,光标挪到下一首歌曲。歌曲总原创 2020-08-06 12:30:23 · 332 阅读 · 0 评论 -
[每日一题]81:洗牌
题目描述洗牌在生活中十分常见,现在需要写一个程序模拟洗牌的过程。 现在需要洗2n张牌,从上到下依次是第1张,第2张,第3张一直到第2n张。首先,我们把这2n张牌分成两堆,左手拿着第1张到第n张(上半堆),右手拿着第n+1张到第2n张(下半堆)。接着就开始洗牌的过程,先放下右手的最后一张牌,再放下左手的最后一张牌,接着放下右手的倒数第二张牌,再放下左手的倒数第二张牌,直到最后放下左手的第一张牌。接着把牌合并起来就可以了。 例如有6张牌,最开始牌的序列是1,2,3,4,5,6。首先分成两组,左手拿着1,2,3原创 2020-08-06 09:55:36 · 309 阅读 · 0 评论 -
[每日一题]74:杨辉三角的变形
题目描述11 1 11 2 3 2 11 3 6 7 6 3 11 4 10 16 19 16 10 4 1以上三角形的数阵,第一行只有一个数1,以下每行的每个数,是恰好是它上面的数,左上角数到右上角的数,3个数之和(如果不存在某个数,认为该数就是0)。求第n行第一个偶数出现的位置。如果没有偶数,则输出-1。例如输入3,则输出2,输入4则输出3。输入n(n <= 1000000000)本题有多组输入数据,输入到文件末尾,请使用while(cin>原创 2020-08-03 17:47:23 · 529 阅读 · 0 评论 -
[每日一题]76:统计每个月兔子的总数
题目描述有一只兔子,从出生后第3个月起每个月都生一只兔子,小兔子长到第三个月后每个月又生一只兔子,假如兔子都不死,问每个月的兔子总数为多少?/** * 统计出兔子总数。 * * @param monthCount 第几个月 * @return 兔子总数 */public static int getTotalCount(int monthCount){ return 0;}输入描述:输入int型表示month输出描述:输出兔子总数int型示例1输入9输出3原创 2020-08-04 09:20:25 · 273 阅读 · 0 评论 -
[每日一题]77:字符串通配符
题目描述问题描述:在计算机中,通配符一种特殊语法,广泛应用于文件搜索、数据库、正则表达式等领域。现要求各位实现字符串通配符的算法。要求:实现如下2个通配符:*:匹配0个或以上的字符(字符由英文字母和数字0-9组成,不区分大小写。下同)?:匹配1个字符输入:通配符表达式;一组字符串。输出:返回匹配的结果,正确输出true,错误输出false输入描述:先输入一个带有通配符的字符串,再输入一个需要匹配的字符串输出描述:返回匹配的结果,正确输出true,错误输出false示例1输入原创 2020-08-04 10:08:49 · 412 阅读 · 0 评论 -
[每日一题]78:汽水瓶
题目描述有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶,方法如下:先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶子,用3个再换一瓶,喝掉这瓶满的,这时候剩2个空瓶子。然后你让老板先借给你一瓶汽水,喝掉这瓶满的,喝完以后用3个空瓶子换一瓶满的还给老板。如果小张手上有n个空汽水瓶,最多可以换多少瓶汽水喝?输入描述:输入文件最多包含10组测试数据,每个数据占一行,仅包含一个正整数n(1<=n<=100),表示小原创 2020-08-04 13:04:51 · 460 阅读 · 0 评论 -
[每日一题]79:查找两个字符串a,b中的最长公共子串
题目描述查找两个字符串a,b中的最长公共子串。若有多个,输出在较短串中最先出现的那个。输入描述:输入两个字符串输出描述:返回重复出现的字符示例1输入abcdefghijklmnopabcsafjklmnopqrstuvw输出jklmnop解题思路本题需要用动态规划求解,dp[i][j]记录短字符串 s1 前 i 个字符和长字符串 s2 前 j 个字符的最长子串的长度,初始化所有值为 0。当 s1[i-1] = s2[j-1]时,dp[i][j] = dp[i - 1][j原创 2020-08-05 00:32:36 · 390 阅读 · 0 评论 -
[每日一题]80:公共字串计算
题目描述题目标题:计算两个字符串的最大公共字串的长度,字符不区分大小写详细描述:接口说明原型:int getCommonStrLength(char * pFirstStr, char * pSecondStr);输入参数:char * pFirstStr //第一个字符串char * pSecondStr//第二个字符串输入描述:输入两个字符串输出描述:输出一个整数示例1输入asdfaswerasdfaswer输出6代码示例:#include <iost原创 2020-08-05 17:05:08 · 172 阅读 · 0 评论 -
[每日一题]5:反转字符串
题目1:编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。C代码如下:int OneCountBinary(unsigned int n){ int count = 0; while(n){ if (n & 1){ ++count; } n = n >> 1; } return count;...原创 2020-02-18 18:31:57 · 251 阅读 · 0 评论 -
[每日一题]72:素数
文章目录题目描述输入描述:输出描述:题目描述输入一个整数n(2<=n<=10000),要求输出所有从1到这个整数之间(不包括1和这个整数)个位为1的素数,如果 没有则输出-1。输入描述:输入有多组数据。每组一行,输入n。输出描述:输出所有从1到这个整数之间(不包括1和这个整数)个位为1的素数(素数之间用空格隔开,最后一个素数后面没 有空格),如果没有则输出-1。示例1:输入100输出11 31 41 61 71代码示例:#include <iostream&原创 2020-07-12 09:55:57 · 357 阅读 · 0 评论 -
[每日一题]71:扑克牌大小
题目描述扑克牌游戏大家应该都比较熟悉了,一副牌由54张组成,含3~A,2各4张,小王1张,大王1张。牌面从小到大用如下字符和字符串表示(其中,小写joker表示小王,大写JOKER表示大王)3 4 5 6 7 8 9 10 J Q K A 2 joker JOKER输入两手牌,两手牌之间用“-”连接,每手牌的每张牌以空格分隔,“-”两边没有空格,如:4 4 4 4-joker JOKER请比较两手牌大小,输出较大的牌,如果不存在比较关系则输出ERROR基本规则:(1)输入每手牌可能是个子,对子,原创 2020-05-26 18:26:01 · 514 阅读 · 0 评论 -
[每日一题]70:完全数计算
题目描述完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。例如:28,它有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加,1+2+4+7+14=28。给定函数count(int n),用于计算n以内(含n)完全数的个数。计算范围, 0 < n <= 500000返回n以内完全数的个数。 异常情况返回-1/** * * 完全数(Perfect number)原创 2020-05-25 13:04:23 · 634 阅读 · 0 评论 -
[每日一题]69:手套
题目描述在地下室里放着n种颜色的手套,手套分左右手,但是每种颜色的左右手手套个数不一定相同。A先生现在要出门,所以他要去地下室选手套。但是昏暗的灯光让他无法分辨手套的颜色,只能分辨出左右手。所以他会多拿一些手套,然后选出一双颜色相同的左右手手套。现在的问题是,他至少要拿多少只手套(左手加右手),才能保证一定能选出一双颜色相同的手套。给定颜色种数n(1≤n≤13),同时给定两个长度为n的数组left,right,分别代表每种颜色左右手手套的数量。数据保证左右的手套总数均不超过26,且一定存在至少一种合法方原创 2020-05-25 12:04:59 · 581 阅读 · 0 评论 -
[每日一题]68:查找输入整数二进制中1的个数
题目描述请实现如下接口public static int findNumberOf1( int num){/* 请实现 */return 0;}譬如:输入5 ,5的二进制为101,输出2涉及知识点:注意多组输入输出!!!!!!输入描述:输入一个整数输出描述:计算整数二进制中1的个数(也被称为汉明重量)。示例1输入5输出2C++解答代码#include <iostream>using namespace std;int findNumberOf1原创 2020-05-25 11:03:35 · 439 阅读 · 1 评论 -
[每日一题]67:幸运的袋子(穷举)
题目描述一个袋子里面有n个球,每个球上面都有一个号码(拥有相同号码的球是无区别的)。如果一个袋子是幸运的当且仅当所有球的号码的和大于所有球的号码的积。例如:如果袋子里面的球的号码是{1, 1, 2, 3},这个袋子就是幸运的,因为1 + 1 + 2 + 3 > 1 * 1 * 2 * 3你可以适当从袋子里移除一些球(可以移除0个,但是别移除完),要使移除后的袋子是幸运的。现在让你编程计算一下你可以获得的多少种不同的幸运的袋子。输入描述:第一行输入一个正整数n(n ≤ 1000)第二行为n个原创 2020-05-24 23:38:27 · 543 阅读 · 0 评论 -
[每日一题]66:计算日期到天数的转换
题目描述根据输入的日期,计算是这一年的第几天。。详细描述:输入某年某月某日,判断这一天是这一年的第几天?。输入描述:输入三行,分别是年,月,日输出描述:成功:返回outDay输出计算后的第几天;失败:返回-1示例1输入20121231输出366思路用一个数组存放每月的累积天数,输入的日期天数= 当月的天数 + 当月之前的累积天数 如果包含二月,再去判断是否为闰年,如果是闰年,再加1天即可解答代码#include <iostream>#include &原创 2020-05-24 10:18:57 · 400 阅读 · 0 评论 -
[每日一题]65:跳石板(动归、贪心)
跳石板题目描述输入描述:输出描述:【题目解析】:动态规划思路贪心思路题目描述小易来到了一条石板路前,每块石板上从1挨着编号为:1、2、3…这条石板路要根据特殊的规则才能前进:对于小易当前所在的编号为K的 石板,小易单次只能往前跳K的一个约数(不含1和K)步,即跳到K+X(X为K的一个非1和本身的约数)的位置。 小易当前处在编号为N的石板,他想跳到编号恰好为M的石板去,小易想知道最少需要跳跃几次可以到达。例如:N = 4,M = 24:4->6->8->12->18->原创 2020-05-23 22:50:30 · 332 阅读 · 0 评论 -
[每日一题]64:参数解析
题目描述在命令行输入如下命令:xcopy /s c:\ d:\,各个参数如下:参数1:命令字xcopy参数2:字符串/s参数3:字符串c:参数4:字符串d:请编写一个参数解析程序,实现将命令行各个参数解析出来。解析规则:参数分隔符为空格对于用“”包含起来的参数,如果中间有空格,不能解析为多个参数。比如在命令行输入xcopy /s “C:\program files” “d:\”时,参数仍然是4个,第3个参数应该是字符串C:\program files,而不是C:\program,注意原创 2020-05-22 22:27:56 · 558 阅读 · 0 评论 -
[每日一题]63:查找组成一个偶数最近的两个素数
题目描述任意一个偶数(大于2)都可以由2个素数组成,组成偶数的2个素数有很多种情况,本题目要求输出组成指定偶数的两个素数差值最小的素数对输入描述:输入一个偶数输出描述:输出两个素数示例1输入20输出713思路本题首先需要判断素数,素数表示除过1和本身,不能被其它数整除。通过循环遍历来判断一个数是否为素数。最近的两个素数应该从最中间的位置开始向两边查找。解答代码#include <iostream>#include <math.h>using na原创 2020-05-14 18:10:45 · 370 阅读 · 0 评论 -
[每日一题]62:二进制插入
题目描述有两个32位整数n和m,请编写算法将m的二进制数位插入到n的二进制的第j到第i位,其中二进制的位数从低位数到高位且以0开始。给定两个数int n和int m,同时给定int j和int i,意义如题所述,请返回操作后的数,保证n的第j到第i位均为零,且m的二进制位数小于等于i-j+1。测试样例:1024,19,2,6返回:1100思路本题主要理解题意即可,不能被唬住。m:1024:100000000 00n:19 : 10011要把n的二进制值插入m的第j位到第i位,只需要把n原创 2020-05-14 16:30:11 · 248 阅读 · 0 评论 -
[每日一题]61:求最大连续bit数
题目描述功能: 求一个byte数字对应的二进制数字中1的最大连续数,例如3的二进制为00000011,最大连续2个1输入: 一个byte型的数字输出: 无返回: 对应的二进制数字中1的最大连续数输入描述:输入一个byte数字输出描述:输出转成二进制之后连续1的个数示例1输入3输出2思路根据位运算,获取每一位的二进制值。获取第i位的值: (n >> i) & 1。如果1连续,则计数累加, 如果不连续,则从0开始计数。解答代码:#include <原创 2020-05-14 11:33:53 · 315 阅读 · 0 评论 -
[每日一题]60:最近公共祖先
题目描述有一棵无穷大的满二叉树,其结点按根结点一层一层地从左往右依次编号,根结点编号为1。现在有两个结点a,b。请设计一个算法,求出a和b点的最近公共祖先的编号。给定两个int a,b。为给定结点的编号。请返回a和b的最近公共祖先的编号。注意这里结点本身也可认为是其祖先。测试样例:2,3返回:1思路题目所描述的满二叉树如下: 1 /\ 2 3 /\ /\ 4 5 6 7上述树中子节点与父节点之间的关系为root = child / 2所以如果a != b,就让原创 2020-05-14 10:40:43 · 197 阅读 · 0 评论 -
[每日一题]59:密码强度等级
题目描述密码按如下规则进行计分,并根据不同的得分为密码进行安全等级划分。一、密码长度:5 分: 小于等于4 个字符10 分: 5 到7 字符25 分: 大于等于8 个字符二、字母:0 分: 没有字母10 分: 全都是小(大)写字母20 分: 大小写混合字母三、数字:0 分: 没有数字10 分: 1 个数字20 分: 大于1 个数字四、符号:0 分: 没有符号10 分: 1 个符号25 分: 大于1 个符号五、奖励:2 分: 字母和数字3 分: 字母、数字和符号5 分原创 2020-05-12 11:33:14 · 872 阅读 · 0 评论 -
[每日一题]58:井字棋
题目描述对于一个给定的井字棋棋盘,请设计一个高效算法判断当前玩家是否获胜。给定一个二维数组board,代表当前棋盘,其中元素为1的代表是当前玩家的棋子,为0表示没有棋子,为-1代表是对方玩家的棋子。测试样例:[[1,0,1],[1,-1,-1],[1,-1,0]]返回:true思路井字棋有四种情况表示当前玩家获胜,1代表当前玩家棋子行全为1, 即行的和为3列全为1, 列的和为3主对角全为1, 对角和为3副对角全为1, 对角和为3如果扩展为N*N的话,判断和是否等于N,下面代码适用原创 2020-05-12 10:21:28 · 583 阅读 · 0 评论 -
[每日一题]57:走方格的方案数
题目描述请编写一个函数(允许增加子函数),计算n x m的棋盘格子(n为横向的格子数,m为竖向的格子数)沿着各自边缘线从左上角走到右下角,总共有多少种走法,要求不能走回头路,即:只能往右和往下走,不能往左和往上走。输入描述:输入两个正整数输出描述:返回结果示例1输入22输出6思路求取路径总数的题目,一般可以通过递归求解,对于复杂的问题,可以通过动态规划求解。递归代码#include<iostream>using namespace std;int path原创 2020-05-11 11:07:55 · 640 阅读 · 0 评论 -
[每日一题]55:求最小公倍数
题目描述正整数A和正整数B 的最小公倍数是指 能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小公倍数。输入描述:输入两个正整数A和B。输出描述:输出A和B的最小公倍数。示例1输入5 7输出35...原创 2020-05-07 23:11:50 · 486 阅读 · 0 评论 -
[每日一题]53:合法括号序列判断
题目描述对于一个字符串,请设计一个算法,判断其是否为一个合法的括号串。给定一个字符串A和它的长度n,请返回一个bool值代表它是否为一个合法的括号串。测试样例:"(()())",6返回:true测试样例:"()a()()",7返回:false测试样例:"()(()()",7返回:false思路用栈结构实现,栈中存放左括号,当遇到右括号之后,检查栈中是否有左括号,如果...原创 2020-05-07 15:53:06 · 374 阅读 · 0 评论 -
[每日一题]51:不要二
文章目录题目描述输入描述:输出描述:思路1思路2题目描述二货小易有一个W*H的网格盒子,网格的行编号为0~H-1,网格的列编号为0~W-1。每个格子至多可以放一块蛋糕,任意两块蛋糕的欧几里得距离不能等于2。对于两个格子坐标(x1,y1),(x2,y2)的欧几里得距离为:( (x1-x2) * (x1-x2) + (y1-y2) * (y1-y2) ) 的算术平方根小易想知道最多可以放多...原创 2020-05-07 10:07:21 · 221 阅读 · 0 评论 -
[每日一题]50:统计回文
题目描述“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。花花非常喜欢这种拥有对称美的回文串,生日的时候她得到两个礼物分别是字符串A和字符串B。现在她非常好奇有没有办法将字符串B插入字符串A使产生的字符串是一个回文串。你接受花花的请求,帮助她寻找有多少种插入办法可以使新串是一个回文串。如果字符串B插入的位置不同就考虑为不一样的办法。例如:A = “a...原创 2020-05-02 19:25:15 · 239 阅读 · 0 评论 -
[每日一题]49:进制转换
文章目录题目描述输入描述:输出描述:思路题目描述给定一个十进制数M,以及需要转换的进制数N。将十进制数M转化为N进制数输入描述:输入为一行,M(32位整数)、N(2 ≤ N ≤ 16),以空格隔开。输出描述:为每个测试实例输出转换后的数,每个输出占一行。如果N大于9,则对应的数字规则参考16进制(比如,10用A表示,等等)示例1输入7 2输出111思路首先写一个字...原创 2020-05-02 18:15:28 · 331 阅读 · 0 评论 -
[每日一题]47:计算糖果
题目描述A,B,C三个人是好朋友,每个人手里都有一些糖果,我们不知道他们每个人手上具体有多少个糖果,但是我们知道以下的信息:A - B, B - C, A + B, B + C. 这四个数值.每个字母代表每个人所拥有的糖果数.现在需要通过这四个数值计算出每个人手里有多少个糖果,即A,B,C。这里保证最多只有一组整数A,B,C满足所有题设条件。输入描述:输入为一行,一共4个整数,分别为A ...原创 2020-05-02 16:54:08 · 279 阅读 · 0 评论 -
[每日一题]48:字符串中找出连续最长的数字串
题目描述读入一个字符串str,输出字符串str中的连续最长的数字串输入描述测试输入包含1个测试用例,一个字符串str,长度不超过255。输出描述在一行内输出str中里连续最长的数字串。示例1输入abcd12345ed125ss123456789输出123456789解答代码#include <iostream>#include <string>...原创 2020-05-02 15:11:28 · 227 阅读 · 0 评论 -
[每日一题]45:倒置字符串
题目描述将一句话的单词进行倒置,标点不倒置。比如 I like beijing. 经过函数后变为:beijing. like I输入描述:每个测试输入包含1个测试用例: I like beijing. 输入用例长度不超过100输出描述:依次输出倒置之后的字符串,以空格分割示例1:输入I like beijing.输出beijing. like I思路1:先将整个字符串...原创 2020-04-25 18:08:48 · 296 阅读 · 0 评论 -
[每日一题]44:排序子序列
题目一标题:排序子序列牛牛定义排序子序列为一个数组中一段连续的子序列,并且这段子序列是非递增或者非递减排序的。牛牛有一 个长度为n的整数数组A,他现在有一个任务是把数组A分为若干段排序子序列,牛牛想知道他最少可以把这个数 组分为几段排序子序列.如样例所示,牛牛可以把数组A划分为[1,2,3]和[2,2,1]两个排序子序列,至少需要划分为2个排序子序列,所以输出 2输入描述:输入的第一行为...原创 2020-04-24 15:27:54 · 358 阅读 · 0 评论