剑指offer解题
木杉Vincent
这个作者很懒,什么都没留下…
展开
-
剑指offer 和为S的连续正数列
题目描述小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!输出描述:输出所有和为S的连续正...原创 2018-06-20 22:23:25 · 214 阅读 · 0 评论 -
剑指offer 把数组排成最小的数
题目描述输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。解题思路3 32 321 先转化成string数组,从第一位开始,对数组遍历,找出第i位最小的数,如果都一样,就再次遍历,找出第i+1位最小的数,找到就将这个数从数组汇中删去代码...原创 2018-06-30 17:37:19 · 177 阅读 · 0 评论 -
剑指offer 丑数
题目描述把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。解题思路丑数不难找,关键是如何让他们从小到大找到 下一个丑数总是由以前的某个丑数乘以2或3或5得到,我们只要每次找到以前的丑数中的一些数,然后乘以2,3,5,将其中最小的那个加入集合,再重复以上过...原创 2018-06-30 17:36:40 · 175 阅读 · 0 评论 -
剑指offer 第一个只出现一次的字符
题目描述在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置解题思路我们遍历这个字符串,假设每个当前字符都是只出现一次的,我们分别向前和向后考察是否存在相同字符 向前考察:保存一个vector里面存放所有已知的已经重复过的字符,如果当前字符跟这个vector里面的字符相同,那必然不是只出现一次的 向后考察:遍历当...原创 2018-06-30 17:34:28 · 259 阅读 · 0 评论 -
剑指offer 数字在排序数组中出现的次数
题目描述统计一个数字在排序数组中出现的次数。解题思路一个数字在排序数组中的分布一定是连续的,题目其实是一个在排序数组中查找数字的意思,我使用二分查找代码class Solution {public: int GetNumberOfK(vector<int> data ,int k) { int length=data.size(...原创 2018-06-30 17:33:42 · 176 阅读 · 0 评论 -
剑指offer 二叉树的深度
题目描述输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。解题思路使用递归来遍历二叉树,返回左右子节点树较大的深度代码/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; ...原创 2018-06-30 17:33:00 · 251 阅读 · 0 评论 -
剑指offer 平衡二叉树
题目描述输入一棵二叉树,判断该二叉树是否是平衡二叉树。解题思路平衡二叉树是这样定义的: 平衡二叉树(Balanced Binary Tree)又被称为AVL树,具有以下性质:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。 所以算法分为两部分:计算左右子树高度(即为深度),和左右子树是否仍为AVL树对每个节点,计算它的左右子树...原创 2018-06-30 17:32:18 · 165 阅读 · 0 评论 -
剑指offer 数组中只出现一次的数字
题目描述一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。解题思路我们利用异或的特性,异或两个相同的数字的结果为零,第一遍对数组进行异或的结果是 两个只出现一次的数字的异或值(a^b),并不是我们想要的,所以我们根据这个异或值找到一位为1的位数 (a和b的这个位上的值肯定是不相同的),按照原始数组中所有数字的这个位是否为1分成两组,这样两组...原创 2018-06-30 17:31:35 · 171 阅读 · 0 评论 -
剑指offer 和为S的两个数字
题目描述输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。输出描述:对应每个测试案例,输出两个数,小的先输出。解题思路先找到1/2S的值所在的位置pivot,从这个位置开始往左右两边遍历,设置两个指针i和j,I指向pivot的位置,j往右遍历,一旦array[i]+array[j]>S ,则进入下一...原创 2018-06-30 17:30:35 · 177 阅读 · 0 评论 -
剑指offer 扑克牌顺子
题目描述LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)…他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是顺子…..LL不高兴了,他想了想,决定大\小 王可以看成任何数字,并且A看作1,J为11,Q为12,K为13。...原创 2018-06-30 17:23:02 · 232 阅读 · 0 评论 -
剑指offer 圆圈中最后剩下的数
题目描述每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0…m-1报数….这样下去….直到剩下...原创 2018-06-30 17:21:46 · 209 阅读 · 0 评论