剑指offer
IT莫莫
这个作者很懒,什么都没留下…
展开
-
35. Search Insert Position
You may assume no duplicates in the array.Example 1:Input: [1,3,5,6], 5Output: 2Example 2:Input: [1,3,5,6], 2Output: 1Example 3:Input: [1,3,5,6], 7Output: 4Example 4:Input: [...原创 2019-06-30 10:59:31 · 118 阅读 · 0 评论 -
剑指offer:求1+2+3+...+n
题目描述求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。 这道题难点在于不能用判断和循环,没有办法累加求和,这里用了一个递归短路的办法,每次递归sum+1,最终状态是n=0了,不满足判断条件,递归终止。# -*- coding:utf-8 -*-class Solution: ...原创 2018-09-20 12:30:45 · 114 阅读 · 0 评论 -
剑指offer:扑克牌顺子
题目描述LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是顺子.....LL不高兴了,他想了想,决定大\小 王可以看成任何数字,并且A看作1,J为11,Q为12,K...原创 2018-09-20 12:22:22 · 157 阅读 · 0 评论 -
剑指offer:左旋转字符串
# -*- coding:utf-8 -*-class Solution: def LeftRotateString(self, s, n): # write code here if s=='': return '' n=n%len(s) s=list(s) s=s[n:len(s...原创 2018-09-20 11:25:13 · 79 阅读 · 0 评论 -
剑指offer:二叉搜索树的后序遍历序列
# -*- coding:utf-8 -*-class Solution: def VerifySquenceOfBST(self, sequence): # write code here ''' if sequence==[]: return False return self.judge(se...原创 2018-09-15 11:11:34 · 191 阅读 · 0 评论 -
剑指offer:从上往下打印二叉树
# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: def PrintFromTopToBottom(self, ...原创 2018-09-15 09:29:43 · 82 阅读 · 0 评论 -
剑指offer:栈的压入、弹出序列
# -*- coding:utf-8 -*-class Solution: def IsPopOrder(self, pushV, popV): # write code here stack=[] pop=0 for i in range(len(pushV)): stack.append(pus...原创 2018-09-15 07:31:42 · 91 阅读 · 0 评论 -
剑指offer:包含min函数的栈
# -*- coding:utf-8 -*-class Solution: def __init__(self): self.s=[] self.mins=[] def push(self, node): # write code here self.s.append(node) if s...原创 2018-09-15 00:30:45 · 76 阅读 · 0 评论 -
剑指offer:二叉树的镜像
# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: # 返回镜像树的根节点 def Mirror(self...原创 2018-09-14 12:30:19 · 76 阅读 · 0 评论 -
剑指offer:树的子结构
# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: def HasSubtree(self, pRoot1, pR...原创 2018-09-14 12:19:39 · 71 阅读 · 0 评论 -
剑指offer:和为S的连续正数序列
题目描述小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!输出描述:输出所有和为S的连续正数...原创 2018-09-18 06:46:49 · 93 阅读 · 0 评论 -
剑指offer:把二叉树打印成多行
题目描述从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。用队列来实现按行打印,但是由于要分层打印,需要区分每一行,所以要用一个tmp来记录每层打印出的结果# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self....原创 2018-10-01 10:50:30 · 82 阅读 · 0 评论 -
剑指offer:二叉树中和为某一值的路径
# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: def __init__(self): ...原创 2018-09-15 12:08:32 · 113 阅读 · 0 评论 -
剑指offer:链表中环的入口结点
题目描述给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。很经典的一道题目,用快慢两个节点遍历链表,一个一次走一步,一个一次走两步,直到两个结点相遇,此时:快结点走的步数是慢节点的两倍,s(slow)=a s(fast)=2a快结点之所以走的比慢节点多还相遇了,可以理解为快结点走到相遇的位置后就一直在环里转圈,设圈中结点数量为n2a-a=n n=a ,...原创 2018-09-22 13:11:50 · 81 阅读 · 0 评论 -
剑指offer:删除链表中重复的结点
题目描述在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# s...原创 2018-09-22 12:42:10 · 81 阅读 · 0 评论 -
剑指offer:表示数值的字符串
题目描述请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。这道题如果没有题目描述中的几个例子会很难,很多情原创 2018-09-22 12:16:25 · 95 阅读 · 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]。不能使用除法。# -*- coding:utf-8 -*-class Solution: def multiply(self, A): # write code her...原创 2018-09-21 14:51:02 · 81 阅读 · 0 评论 -
剑指offer:数组中重复的数字
题目描述在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。 这道题可以用额外数组来做,但是它有特点,在长度为n的数组中没有超过n-1的数字,所以可以用数字的索引来做。具体做...原创 2018-09-21 11:26:39 · 80 阅读 · 0 评论 -
剑指offer:把字符串转换成整数
题目描述将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。输入描述:输入一个字符串,包括数字字母符号,可以为空输出描述:如果是合法的数值表达则返回该数字,否则返回0输入+2147483647 1...原创 2018-09-21 10:42:54 · 228 阅读 · 0 评论 -
剑指offer:不用加减乘除做加法
题目描述写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。链接:https://www.nowcoder.com/questionTerminal/59ac416b4b944300b617d4f7f111b215来源:牛客网首先看十进制是如何做的: 5+7=12,三步走 第一步:相加各位的值,不算进位,得到2。 第二步:计算进位值,得到10. 如果这一步的进...转载 2018-09-21 09:49:36 · 100 阅读 · 0 评论 -
剑指offer:按之字形顺序打印二叉树
题目描述请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None...原创 2018-09-26 00:23:47 · 91 阅读 · 0 评论 -
剑指offer:对称的二叉树
题目描述请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。递归版本:判断左右孩子是否相等,相等后返回true。注意只有左右都是None的时候才相等,两个结点的值一样并不是结点一样,因为指向的地址不一样。如果左右结点的值一样的话,递归比较左右孩子镜像相等。不满足的话返回false。# -*- coding:utf-8 -*-...原创 2018-09-25 23:33:09 · 85 阅读 · 0 评论 -
剑指offer:二叉树的下一个结点
题目描述给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。# -*- coding:utf-8 -*-# class TreeLinkNode:# def __init__(self, x):# self.val = x# self.left = None...原创 2018-09-25 22:52:30 · 110 阅读 · 0 评论 -
剑指offer:数组中只出现一次的数字
题目描述一个整型数组里除了两个数字之外,其他的数字都出现了偶数次。请写程序找出这两个只出现一次的数字。 出现了偶数次,那么相同的数字两两之间异或结果为零,这里由偶数次可以想到用异或来计算。将数组从头到尾异或完了之后,剩下的就是两个只出现一次的数字异或。那怎么再区分这两个数呢,异或的结果为1的时候说明这两个数不同,那么只要找到第一位不同的位,将数组分成两份,每一份再异或运算,最后留下的就...原创 2018-09-18 06:07:06 · 114 阅读 · 0 评论 -
剑指offer:平衡二叉树
题目描述输入一棵二叉树,判断该二叉树是否是平衡二叉树。 平衡二叉树定义(AVL):它或者是一颗空树,或者具有以下性质的二叉树:它的左子树和右子树的深度之差(平衡因子)的绝对值不超过1,且它的左子树和右子树都是一颗平衡二叉树。之前刚做过一道计算树深度的题,这道题我们就看每一个节点它的左子树和右子树深度差就可以了,注意空树也是平衡的。# -*- coding:utf-8 -*-...原创 2018-09-18 05:39:20 · 91 阅读 · 0 评论 -
剑指offer:二叉树的深度
class Solution: def TreeDepth(self, pRoot): # write code here if pRoot==None: return 0 return max(1+self.TreeDepth(pRoot.left),1+self.TreeDepth(pRoot.right))...原创 2018-09-18 04:48:40 · 149 阅读 · 0 评论 -
剑指offer:复杂链表的复制
# -*- coding:utf-8 -*-# class RandomListNode:# def __init__(self, x):# self.label = x# self.next = None# self.random = Noneclass Solution: # 返回 RandomListNode ...原创 2018-09-15 23:56:58 · 92 阅读 · 0 评论 -
剑指offer:斐波那契数列
# -*- coding:utf-8 -*-class Solution: def Fibonacci(self, n): # write code here f=0 g=1 while n: g=g+f f=g-f n=n-1 ret...原创 2018-09-06 13:03:23 · 84 阅读 · 0 评论 -
剑指offer:旋转数组的最小数字
# -*- coding:utf-8 -*-class Solution: def minNumberInRotateArray(self, rotateArray): # write code here ''' if len(rotateArray)==0: return 0 if len(rot...原创 2018-09-05 23:07:12 · 100 阅读 · 0 评论 -
剑指offer:用两个栈实现队列
# -*- coding:utf-8 -*-class Solution: def __init__(self): self.stack1=[] self.stack2=[] def push(self, node): # write code here self.stack1.append(n...原创 2018-09-05 22:42:37 · 61 阅读 · 0 评论 -
剑指offer:合并两个排序的链表
# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: # 返回合并后列表 ''' def Merge(self, pHead1, pHead2): ...原创 2018-09-08 11:58:13 · 99 阅读 · 0 评论 -
剑指offer:反转链表
# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: # 返回ListNode def ReverseList(self, pHead): # wr...原创 2018-09-08 11:07:18 · 81 阅读 · 0 评论 -
剑指offer:8.重建二叉树
# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: # 返回构造的TreeNode根节点 def reCo...原创 2018-09-05 12:36:33 · 82 阅读 · 0 评论 -
剑指offer:3.从尾到头打印链表
# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: # 返回从尾部到头部的列表值序列,例如[1,2,3] def __init__(self): ...原创 2018-09-05 12:15:25 · 100 阅读 · 0 评论 -
剑指offer:2.替换空格
public class Solution { public String replaceSpace(StringBuffer str) { int space=0; for(int i = 0;i<str.length();i++){ if(str.charAt(i)==' ') space++;...原创 2018-09-05 11:51:00 · 134 阅读 · 0 评论 -
剑指offer-1.二维数组中的查找
# -*- coding:utf-8 -*-class Solution: # array 二维列表 def Find(self, target, array): # write code here row=len(array) if row==0: return False col=len...原创 2018-09-05 07:26:31 · 68 阅读 · 0 评论 -
剑指offer:二进制中1的个数
public class Solution { public int NumberOf1(int n) { /* int ans=0; while (n!=0){ ans++; n=n&(n-1); } return ans; ...原创 2018-09-07 03:42:53 · 80 阅读 · 0 评论 -
剑指offer:数组中出现超过一半的数
# -*- coding:utf-8 -*-class Solution: def MoreThanHalfNum_Solution(self, numbers): # write code here if len(numbers)==0: return 0 tmp=numbers[0] count...原创 2018-09-17 04:16:23 · 120 阅读 · 0 评论 -
剑指offer:数字在排序数组中出现的次数
# -*- coding:utf-8 -*-class Solution: def GetNumberOfK(self, data, k): # write code here low=0 high=len(data)-1 mid=(low+high)/2 while low<=high: ...原创 2018-09-18 04:34:34 · 193 阅读 · 0 评论 -
剑指offer:两个链表的第一个公共节点
# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def FindFirstCommonNode(self, pHead1, pHead2): # wr...原创 2018-09-18 00:43:19 · 141 阅读 · 0 评论