![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
剑指offer
weixin_40277254
这个作者很懒,什么都没留下…
展开
-
剑指offer 数组中出现次数超过一半的数字
题目描述: 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。 解题思路 1: 如果是排好序的数组,可以容易地统计出每个数字出现的次数。题目给出的数组没有说是排好序的,因此需要先排序。 排序的时间复杂度是O(nlogn) 。 pyt...原创 2019-07-13 14:13:02 · 84 阅读 · 0 评论 -
剑指offer 孩子们的游戏(圆圈中最后剩下的数)
题目描述: 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0...m-1报数....这样下去....原创 2019-03-22 17:05:54 · 73 阅读 · 0 评论 -
剑指offer 从上往下打印二叉树
题目描述: 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 解题思路: 利用队列先进先出(FIFO)特性。每从队列头部获取一个节点,就将该节点的左右子节点存入队列。如此往复,直至队列为空。 二叉树样例及值的变化: 步骤 ret queue 1 8 6,10 2 6 10,5,7 3 10 5,7,9,11 4 ...原创 2019-03-21 17:05:28 · 70 阅读 · 0 评论 -
剑指offer 数字在排序数组中出现的次数
题目描述: 统计一个数字在排序数组中出现的次数。 Python代码: 方法1 count class Solution: def GetNumberOfK(self, data, k): # write code here return data.count(k) 方法2 不用count的计数方法 class Solution: de...原创 2019-03-19 15:27:32 · 70 阅读 · 0 评论 -
剑指offer 数组中只出现一次的数字
题目描述: 一个整型数组里除了两个数字之外,其他的数字都出现了偶数次。请写程序找出这两个只出现一次的数字。 python代码: 方法1 使用字典记录数组中的值及对应值出现的次数,然后搜索出现一次的数字。 class Solution: # 返回[a,b] 其中ab是出现一次的两个数字 def FindNumsAppearOnce(self, array): ...原创 2019-03-19 16:03:25 · 78 阅读 · 0 评论 -
剑指offer 把数组排成最小的数
题目描述: 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 python代码: class Solution: def PrintMinNumber(self, numbers): # write code here if...原创 2019-03-19 17:47:12 · 59 阅读 · 0 评论 -
剑指offer 二叉树的镜像
题目描述: 操作给定的二叉树,将其变换为源二叉树的镜像。 输入描述: 二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 ...原创 2019-03-21 16:09:26 · 69 阅读 · 0 评论 -
剑指offer 二叉树的深度
题目描述: 输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 解题思路: 递归 python代码: class Solution: def TreeDepth(self, pRoot): # write code here if pRoot is None: ...原创 2019-03-21 17:57:14 · 63 阅读 · 0 评论 -
剑指offer 不用加减乘除做加法
题目描述: 写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。 解题思路: 位运算,5-101,7-111 两个数异或:相当于每一位相加,而不考虑进位。相加各位的值,不算进位,得到010,二进制每位相加就相当于各位做异或操作,101^111。 两个数相与,并左移一位:相当于求得进位。计算进位值,得到1010,相当于各位做与操作得到101,再向左移一位得到101...原创 2019-03-22 10:50:42 · 77 阅读 · 0 评论 -
剑指offer 构建乘积数组
题目描述: 给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法。 解题思路: B[i]的值可以看作矩阵中每行的乘积。B[i]的意义是A数组不包括i位置的所有乘积,分为 i左边的元素乘积和 i右边的所有元素乘积。第一个for计算i左边的乘积,...原创 2019-03-22 15:14:36 · 70 阅读 · 0 评论 -
剑指offer 求1+2+3+...+n
题目描述: 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。 python代码: 方法1 class Solution: def Sum_Solution(self, n): # write code here return sum(list(range(...原创 2019-03-22 15:33:52 · 89 阅读 · 0 评论 -
剑指offer 包含min函数的栈
题目描述: 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。 python代码: class Solution: def __init__(self): self.stack = [] def push(self, node): # write code here self...原创 2019-03-22 15:57:46 · 83 阅读 · 0 评论 -
剑指offer 左旋转字符串
题目描述: 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它! python代码: 方法1 列表切片 class Solution: def ...原创 2019-03-23 21:00:39 · 107 阅读 · 0 评论 -
剑指offer 和为S的两个数字
题目描述: 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 输出描述: 对应每个测试案例,输出两个数,小的先输出。 解题思路: 题目是有序的数组,考虑类似二分的思路,左右指针向中间移动。在移动的过程中由于只移动一步,且是根据大小调节的指针,所以不会“错过”要查找的target。题目中要求当存在多个组合的时...原创 2019-03-23 21:46:26 · 74 阅读 · 0 评论 -
剑指offer 二维数组中的查找
题目描述: 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 解题思路: 矩阵是顺序排列的,从左下角来看,向上数字递减,向右数字递增,因此从左下角开始查找,当要查找数字比左下角数字大时,右移;当要查找数字比左下角数字小时,上移。 python代码:...原创 2019-03-31 10:35:49 · 93 阅读 · 0 评论 -
剑指offer 旋转数组的最小数字
题目描述: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 python代码: 1 直接使用min函数 class Solution: def minN...原创 2019-03-31 14:17:25 · 69 阅读 · 0 评论 -
剑指offer 连续子数组的最大和
题目描述: HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。给一个数组,返回它的最大连续子...原创 2019-07-13 15:13:05 · 98 阅读 · 0 评论