剑指offer
Eliauk_Nuyoah
这个作者很懒,什么都没留下…
展开
-
山寨金闪闪
题目描述 金闪闪死后,红A拿到了王之财宝,里面有n个武器,长度各不相同。红A发现,拿其中三件武器首尾相接,组成一个三角形,进行召唤仪式,就可以召唤出一个山寨金闪闪。(例如,三件武器长度为10、15、20,可以召唤成功。若长度为10、11、30,首尾相接无法组成三角形,召唤失败。)红A于是开了一个金闪闪专卖店。他把王之财宝排成一排,每个客人会随机抽取到一个区间[l,r],客人可以选取区间里的三...原创 2020-03-16 21:44:06 · 219 阅读 · 0 评论 -
剪绳子
题目描述 给你一根长度为n的绳子,请把绳子剪成整数长的m段(m、n都是整数,n>1并且m>1),每段绳子的长度记为k[0],k[1],…,k[m]。请问k[0]xk[1]x…xk[m]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。解题思路 很典型的动态规划,规划方程dp[i]=max(dp[k]*dp[i-k...原创 2020-03-14 21:15:28 · 92 阅读 · 0 评论 -
不用加减乘除做加法
题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。解题思路 加法在计算机中的实现本质上是通过二进制的位运算得到的,这道题就是将加法回归到位运算中。两个二进制num1,num2,num1^num2得到的是不算进位值的相加结果,(num1&num2)<<1得到的是相加的进位值,将num1,num2更新为这两个结果,直到进位为0。实现...原创 2020-03-13 16:37:39 · 86 阅读 · 0 评论 -
礼物
题目描述 “呼!!佳慧,我拿到面试直通卡了!”“吓死宝宝了!哦,你拿到直通卡了啊,好哒,进去吧,你可以直接接受老大的面试了”。 亮亮来到老大的办公室,“骚年,你想做什么工作啊?”“我要做大数据分析!!” “哦~~那你先帮我们解决一个问题。是这样的,我们这次招聘会一共有N个人,我们公司给大家准备了一些礼物,但是我们并不知道这些人具体喜欢什么,现在库房共有m种礼物,每种礼物有Ci件,共N件...原创 2020-03-13 16:09:00 · 203 阅读 · 0 评论 -
股票交易日(动态规划)
题目描述 在股市的交易日中,假设最多可进行两次买卖(即买和卖的次数均小于等于2),规则是必须一笔成交后进行另一笔(即买-卖-买-卖的顺序进行)。给出一天中的股票变化序列,请写一个程序计算一天可以获得的最大收益。请采用实践复杂度低的方法实现。 给定价格序列prices及它的长度n,请返回最大收益。保证长度小于等于500。测试样例:[10,22,5,75,65,80],6返回:87解题...原创 2020-03-11 18:40:52 · 287 阅读 · 0 评论 -
优先队列
题目描述 产品经理(PM)有很多好的idea,而这些idea需要程序员实现。现在有N个PM,在某个时间会想出一个 idea,每个 idea 有提出时间、所需时间和优先等级。对于一个PM来说,最想实现的idea首先考虑优先等级高的,相同的情况下优先所需时间最小的,还相同的情况下选择最早想出的,没有 PM 会在同一时刻提出两个 idea。 同时有M个程序员,每个程序员空闲的时候就会查看每个P...原创 2020-03-11 16:13:47 · 413 阅读 · 0 评论 -
交换查询
题目描述 小M有一个N*M的方格,行列下标均从0开始。其中有K个方格中有数字,表示为(X, Y)方格中有数字C。对方格有2种操作,交换方格的两行或者交换方格的两列。小M希望随时能够知道在经过一系列交换之后某一方格中是否含有数字,并且如果有的话,数字是多少。输入描述输入数据第一行包含3个整数N, M, K。表示N行M列的方格,并且其中K个方格有数字。(1 <= N, M <= ...原创 2020-03-11 12:32:38 · 419 阅读 · 0 评论 -
最长全1串
题目描述 给你一个01字符串,定义答案=该串中最长的连续1的长度,现在你有至多K次机会,每次机会可以将串中的某个0改成1,现在问最大的可能答案。输入描述输入第一行两个整数N,K,表示字符串长度和机会次数第二行输入N个整数,表示该字符串的元素( 1 <= N <= 300000, 0 <= K <= N )解题思路 从某一个位置开始,由于K的限制,能够到达的...原创 2020-03-11 10:25:39 · 996 阅读 · 0 评论 -
奇数位丢弃
题目描述 对于一个由0…n的所有数按升序组成的序列,我们要进行一些筛选,每次我们取当前所有数字中从小到大的第奇数位个的数,并将其丢弃。重复这一过程直到最后剩下一个数。请求出最后剩下的数字。输入描述 每组数据一行一个数字,为题目中的n(n小于等于1000)。解题思路 这道题很简单,很一般的思路就能解开,但是这里记录下看到的一个好思路。 原始序列是0,1,2…n,第一次丢弃的0,2...原创 2020-03-10 17:22:34 · 374 阅读 · 0 评论 -
优美的回文串
题目描述 牛牛在书上看到一种字符串叫做回文串,当一个字符串从左到右和从右到左读都是一样的,就称这个字符串为回文串。牛牛又从好朋友羊羊那里了解到一种被称为优美的回文串的字符串,考虑一个长度为N只包含大写字母的字符串,写出它所有长度为M的连续子串(包含所有可能的起始位置的子串,相同的子串也要计入),如果这个字符串至少有K个子串都是回文串,我们就叫这个字符串为优美的回文串。现在给出一个N,牛牛希望你...原创 2020-03-09 21:55:13 · 323 阅读 · 0 评论 -
字符串最小变换数(编辑距离)
题目描述 给定两个字符串,已知可以使用三种方式进行变换插入一个字符删除一个字符更改一个字符请设计一个算法,找到两个字符串之间的经历几次最小变换,可以字符串1转换成字符串2。解题思路 这是一道典型的编辑距离的题目,即字符串str1至少需要多少步才能到达字符串str2。使用动态规划的方法,dp[i][j]表示字符串str的子串str1.substr(0,i)至少需要多少步到达st...原创 2020-03-06 21:52:44 · 783 阅读 · 0 评论 -
字母交换
题目描述 【编码题】字符串S由小写字母构成,长度为n。定义一种操作,每次都可以挑选字符串中任意的两个相邻字母进行交换。询问在至多交换m次之后,字符串中最多有多少个连续的位置上的字母相同?输入描述 第一行为一个字符串S与一个非负整数m。(1 <= |S| <= 1000, 1 <= m <= 1000000)输出描述一个非负整数,表示操作之后,连续最长的相同字母...原创 2020-03-06 19:30:39 · 862 阅读 · 0 评论 -
如何添加运算符
题目描述 给出一个数字N,对于数字序列 1,2,3 … N。现在在其中插入“+”, “-”, " “,使得表达式的和为M。” "的含义是把相邻的两个数字组成一个数。例如:1 + 2 3 - 4,含义是:1 + 23 - 4 = 20。给出N和M,求出所有合法的序列的个数。解题思路 这道题完全可以暴力搜索,枚举所有情况,然后对每一种情况求值,因为存在一种特殊的’ ‘运算符,可以把它看作是...原创 2020-03-05 16:10:07 · 591 阅读 · 0 评论 -
数列还原
题目描述 牛牛的作业薄上有一个长度为 n 的排列 A,这个排列包含了从1到n的n个数,但是因为一些原因,其中有一些位置(不超过 10 个)看不清了,但是牛牛记得这个数列顺序对的数量是 k,顺序对是指满足 i < j 且 A[i] < A[j] 的对数,请帮助牛牛计算出,符合这个要求的合法排列的数目。输入描述 每个输入包含一个测试用例。每个测试用例的第一行包含两个整数 n 和 ...原创 2020-03-05 12:08:08 · 315 阅读 · 0 评论 -
丑数
题目描述 把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。解题思路&esmp; 这道题对于丑数的定义是其因数中的质因数只有2,3,5的数,那么满足要求的丑数就是由两个丑数相乘得到的,否则如果其中一个不是丑数,那么最终的结果一定包含出来2,3,5之外的...原创 2020-03-04 21:05:35 · 136 阅读 · 0 评论 -
数字游戏
题目描述 小易邀请你玩一个数字游戏,小易给你一系列的整数。你们俩使用这些整数玩游戏。每次小易会任意说一个数字出来,然后你需要从这一系列数字中选取一部分出来让它们的和等于小易所说的数字。 例如: 如果{2,1,2,7}是你有的一系列数,小易说的数字是11.你可以得到方案2+2+7 = 11.如果顽皮的小易想坑你,他说的数字是6,那么你没有办法拼凑出和为6 现在小易给你n个数,让你找出无法从n个数...原创 2020-03-04 11:44:24 · 210 阅读 · 0 评论 -
最后一位
题目描述 牛牛选择了一个正整数X,然后把它写在黑板上。然后每一天他会擦掉当前数字的最后一位,直到他擦掉所有数位。 在整个过程中,牛牛会把所有在黑板上出现过的数字记录下来,然后求出他们的总和sum.例如X = 509, 在黑板上出现过的数字依次是509, 50, 5, 他们的和就是564. 牛牛现在给出一个sum,牛牛想让你求出一个正整数X经过上述过程的结果是sum。输入描述输入包括正...原创 2020-03-04 10:23:39 · 215 阅读 · 0 评论 -
K点游戏
题目描述 小招喵某日闲来无事,想验一下自己的人品,于是给自己定了一个游戏规则:这个游戏有三个因素:N,K,W游戏开始的时候小招喵有0点,之后如果发现自己手上的点不足K点,就随机从1到W的整数中抽取一个(包含1和W),抽到哪个数字的概率都是相同的。重复上述过程,直到小招喵获得了K或者大于K点,就停止获取新的点,这时候小招喵手上的点小于等于N的概率是多少?输入:N = 5, K = 1,...原创 2020-03-03 14:55:55 · 403 阅读 · 0 评论 -
幸运子序列
题目描述 牛牛得到一个长度为n的整数序列V,牛牛定义一段连续子序列的幸运值为这段子序列中最大值和次大值的异或值(次大值是严格的次大)。牛牛现在需要求出序列V的所有连续子序列中幸运值最大是多少。请你帮帮牛牛吧。输入描述 第一行一个整数n,即序列的长度。(2<= n <= 100000)第二行n个数,依次表示这个序列每个数值V[i], (1 ≤ V[i] ≤ 10^8)且保证V...原创 2020-03-03 11:30:05 · 504 阅读 · 0 评论 -
最短字符编码
题目描述 给定一个非空字符串, 按照如下方式编码, 使得编码后长度最小, 返回编码后的长度: 编码规则为: k[encoding_string], 表示重复k次encoding_strng, 例如’abcdefabcdefabc’可表示为’2[abcdef]abc’, 但是’aaa’仅能编码成’aaa’, 因为len(‘3[a]’)>len(‘aaa’).补充:k为正整数, []内的...原创 2020-03-02 17:20:46 · 1387 阅读 · 0 评论 -
加减二叉树
题目描述 二叉树是除了叶子节点之外所有的节点都最多有两个子节点的树。满二叉树则是除叶子节点外所有节点都有两个子节点的树,且所有叶子节点到根节点的距离都相等。 现在有一棵无限大的满二叉树,根节点编号为1。编号为i的节点的左儿子编号为2i,右儿子2i+1(比如根节点1的左儿子为2,右儿子为3,2的左儿子为4,右儿子为5。)。牛牛在这棵树上做一个游戏,他从妞妞那里得到了两个数n和k,妞妞希望他...原创 2020-03-01 11:50:08 · 499 阅读 · 0 评论 -
编程题2--字节跳动2018校招算法方向(第一批)
题目描述 给定一个数组序列, 需要求选出一个区间, 使得该区间是所有区间中经过如下计算的值最大的一个:区间中的最小数 * 区间所有数的和最后程序输出经过计算后的最大值即可,不需要输出具体的区间。如给定序列 [6 2 1]则根据上述公式, 可得到所有可以选定各个区间的计算值:[6] = 6 * 6 = 36;[2] = 2 * 2 = 4;[1] = 1 * 1 = 1;[6,2]...原创 2020-02-29 19:53:52 · 311 阅读 · 0 评论 -
栈的压入、弹出顺序
题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)。解题思路 题目中的所有数据都不相同是题眼,根据这个,可以模拟压栈,然后根据弹...原创 2020-02-29 13:09:45 · 629 阅读 · 0 评论 -
树的子结构
题目描述 两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)解题思路 对于树结构而言,最终的是搞清楚他的递归逻辑。这道题要求判断B是A的子结构,那么就是要比较对应位置上值是否相等。也就是A中存在一个节点,该节点的值等于B的根节点值,并且左右子树和B的左右子树上的对应位置相等。 按照上面的逻辑,需要遍历A的所有节点,如果有节点满足条件,返回true,...原创 2020-02-27 13:41:26 · 90 阅读 · 0 评论 -
最大差值
题目描述 给定一个未排序的数列,找到此数列在已排序状态下的两个相邻值的最大差值,少于两个值时返回0。例如:给定数列 [1,3,2,0,1,6,8] 则 最大差值为3。注意:请尽量使用时间复杂度为O(n)的方案。输入描述 第一行输入单个整数N作为数列的大小,第二行输入所有数列中的元素M,共N个。0 < N <= 1000000, 0 < M < 2100000000...原创 2020-02-27 10:53:27 · 822 阅读 · 0 评论 -
字符串最大长度
题目描述 已知一个字符串数组words,要求寻找其中两个没有重复字符的字符串,使得这两个字符串的长度乘积最大,输出这个最大的乘积。如:words=[“abcd”,“wxyh”,“defgh”], 其中不包含重复字符的两个字符串是"abcd"和"wxyh",则输出16words=[“a”,“aa”,“aaa”,“aaaa”], 找不到满足要求的两个字符串,则输出0。解题思路 由于测试用...原创 2020-02-26 16:48:07 · 405 阅读 · 0 评论 -
平方根问题
问题描述 考虑定义在两正整数上的函数SSR(平方根之和的平方):SSR(A, B) = (sqrt(A) + sqrt(B))^2。牛牛对函数值为整数的情况很感兴趣。现在给定整数n和m,请帮助牛牛计算有序对(A, B)的数量, 满足1 ≤ A ≤ n, 1 ≤ B ≤ m而且SSR(A, B)是一个整数。解题思路 这道题本质上是要求sqrt(AB)是整数,也就是要求AB的乘积是完全平方数...原创 2020-02-26 14:12:15 · 315 阅读 · 0 评论 -
2的N次方
题目描述 对于一个整数N(512 <= N <= 1024),计算2的N次方并在屏幕显示十进制结果。输入描述输入一个整数N(512 <= N <= 1024)输出描述2的N次方的十进制结果解题思路求2的n次方实现的代码:int power2(int n){ if(n<=1) return n+1; if(n%2==0){ int hal...原创 2020-02-23 15:09:50 · 767 阅读 · 0 评论 -
进制转换
问题描述 将一个长度最多为30位数字的十进制非负整数转换为二进制数输出。解题思路 将十进制数转换为二进制数的一般实现思路是:`vector<int> remains;while(n){ remains.push(n%2); n=n/2; }那么这道题的本质是大数除法。从基本除法除法开始: 可以看出每一步都是上一步的余数和当前数字构成的两位数对除数的除法,依...原创 2020-02-22 19:18:16 · 275 阅读 · 0 评论 -
二进制中1的个数
题目描述 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。解题思路 对于n来说,n&(n-1)能够将n的二进制表示中最右面的1变为0,比如n的二进制表示为xxx100,n-1的二进制表示为xxx011,显然进行一个&操作之后,最右面的1已经变为0,那么有多少次操作n可以变为0,n中就含有多少个1。实现代码class Solution {public:...原创 2020-02-22 15:50:10 · 74 阅读 · 0 评论 -
树上最长单色路径
题目描述 对于一棵由黑白点组成的二叉树,我们需要找到其中最长的单色简单路径,其中简单路径的定义是从树上的某点开始沿树边走不重复的点到树上的另一点结束而形成的路径,而路径的长度就是经过的点的数量(包括起点和终点)。而这里我们所说的单色路径自然就是只经过一种颜色的点的路径。你需要找到这棵树上最长的单色路径。 给定一棵二叉树的根节点(树的点数小于等于300,请做到O(n)的复杂度),请返回最长单...原创 2020-02-22 12:12:03 · 554 阅读 · 0 评论 -
矩形覆盖
题目描述 我们可以用2x1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2x1的小矩形无重叠地覆盖一个2xn的大矩形,总共有多少种方法?比如n=3时,2x3的矩形块有3种覆盖方法:解题思路如图,设2xn的矩形有An种方法,可见An=An-1+An-2:所以本质上这道题还是关于求Fibonacci数列。实现代码class Solution {public: int r...原创 2020-02-21 21:00:51 · 133 阅读 · 0 评论 -
庆祝61
题目描述 牛家庄幼儿园为庆祝61儿童节举办庆祝活动,庆祝活动中有一个节目是小朋友们围成一个圆圈跳舞。牛老师挑选出n个小朋友参与跳舞节目,已知每个小朋友的身高h_i。为了让舞蹈看起来和谐,牛老师需要让跳舞的圆圈队形中相邻小朋友的身高差的最大值最小,牛老师犯了难,希望你能帮帮他。 如样例所示,当圆圈队伍按照100,98,103,105顺时针排列的时候最大身高差为5,其他排列不会得到更优的解。...原创 2020-02-21 18:31:30 · 150 阅读 · 0 评论 -
疯狂队列
题目描述 小易老师是非常严厉的,它会要求所有学生在进入教室前都排成一列,并且他要求学生按照身高不递减的顺序排列。有一次,n个学生在列队的时候,小易老师正好去卫生间了。学生们终于有机会反击了,于是学生们决定来一次疯狂的队列,他们定义一个队列的疯狂值为每对相邻排列学生身高差的绝对值总和。由于按照身高顺序排列的队列的疯狂值是最小的,他们当然决定按照疯狂值最大的顺序来进行列队。现在给出n个学生的身高,...原创 2020-02-21 17:14:59 · 166 阅读 · 0 评论 -
塔
题目描述 小易有一些立方体,每个立方体的边长为1,他用这些立方体搭了一些塔。现在小易定义:这些塔的不稳定值为它们之中最高的塔与最低的塔的高度差。小易想让这些塔尽量稳定,所以他进行了如下操作:每次从某座塔上取下一块立方体,并把它放到另一座塔上。 注意,小易不会把立方体放到它原本的那座塔上,因为他认为这样毫无意义。 现在小易想要知道,他进行了不超过k次操作之后,不稳定值最小是多少。输入...原创 2020-02-21 13:35:27 · 162 阅读 · 0 评论 -
走斜线
题目描述 有天他来到一张方格地图上,整张地图可以看做一个二维坐标轴。牛牛此刻处于原点(0,0),他想要到点(x,y)去。牛牛有强迫症,他规定自己必须恰好k步走到点(x,y),中途可以经过任何点包括(x,y),但是第k步一定要到达(x,y)。 一步有八种走法,直线东(+1,0)南(0,-1)西(-1,0)北(0,+1),斜线东南(+1,-1)东北(+1,+1)西南(-1,-1)西北(-1,...原创 2020-02-20 21:47:31 · 1966 阅读 · 0 评论 -
shopee的零食柜
题目描述 shopee的零食柜,有着各式各样的零食,但是因为贪吃,小虾同学体重日益增加,终于被人叫为小胖了,他终于下定决心减肥了,他决定每天晚上去操场跑两圈,但是跑步太累人了,他想转移注意力,忘记痛苦,正在听着音乐的他,突然有个想法,他想跟着音乐的节奏来跑步,音乐有7种音符,对应的是1到7,那么他对应的步长就可以是1-7分米,这样的话他就可以转移注意力了,但是他想保持自己跑步的速度,在规定时间...原创 2020-02-20 18:50:31 · 1239 阅读 · 2 评论 -
跳石板
题目描述 小易来到了一条石板路前,每块石板上从1挨着编号为:1、2、3…这条石板路要根据特殊的规则才能前进:对于小易当前所在的编号为K的 石板,小易单次只能往前跳K的一个约数(不含1和K)步,即跳到K+X(X为K的一个非1和本身的约数)的位置。 小易当前处在编号为N的石板,他想跳到编号恰好为M的石板去,小易想知道最少需要跳跃几次可以到达。例如:N = 4,M = 24:4->6-&...原创 2020-02-20 13:11:27 · 115 阅读 · 0 评论 -
情报(最小生成树)
题目描述 Brotherhood在KWAI建立了分部,但由于燕大人杰地灵,不是什么人都能够任意进出的,于是现在一个棘手的问题摆在了Ezio面前:情报的传递。已知燕大内的Brotherhood一共有n个团体,有些团体之间有一些关系,你可以把它们看作一条边,每条边连接了两个不同的团体,现在一共有m条边。 现在前辈Jumbo要求Ezio将一个情报传递给燕大内的所有团体。已知Ezio亲自去向团体i...原创 2020-02-19 14:09:37 · 159 阅读 · 0 评论 -
屠龙者(最大子树)
题目描述 小明是A村里的屠龙者,他一直保卫着村子的和平,以不受恶龙的侵扰。而恶龙们也对小明恨之入骨,于是恶龙们决定组织一次集体进攻,以打败小明,拿下A村。小明知道,恶龙集体进攻的时候,会在彼此之间建立一种神秘的链接,而被这种链接连接起来的恶龙能够增长彼此的能力,且每有一只恶龙加入到一个链接中,这个链接里的所有龙的能力都会加1,而只有当小明的战斗力大于龙的战斗力时,才能将龙杀死。万幸的是,小明有...原创 2020-02-18 21:58:54 · 610 阅读 · 0 评论