剑指offer
God_white
个人是一个计算机小白,所以从小白开始,努力进阶
展开
-
剑指offer 和为S的两个数字 python
题目描述输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。样例输入[1,2,3,4,10],11输出[1,10]想法一:由于是排序好的数组,所以从最小的数字low开始找,在数组中找是否存在tsum-low即可class Solution: def FindNumbersWithSum(self,...原创 2018-10-30 11:26:05 · 381 阅读 · 0 评论 -
剑指offer 平衡二叉树 python
题目描述输入一棵二叉树,判断该二叉树是否是平衡二叉树。样例如果是 返回True如果不是 返回False想法一:遍历节点,计算左右子树的高度,在计算同时,如果有子树不符合平衡二叉树,则返回-1,这样不需要遍历所有节点。流程图如下:代码:class Solution: def IsBalanced_Solution(self, pRoot): # wri...原创 2018-10-11 15:44:04 · 481 阅读 · 1 评论 -
剑指offer 栈的压入、弹出序列 python
题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等样例例如序列1,2,3,4,5是某栈的压入顺序序列4,5,3,2,1是该压栈序列对应的一个弹出序列但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)想法一:使用一个辅助栈,遍历压入顺序压入辅助栈中,然后判断辅助栈顶元素是...原创 2018-10-11 11:32:05 · 221 阅读 · 0 评论 -
剑指offer 二叉树的深度 python
题目描述输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。样例返回深度即可想法一:递归遍历class Solution: def TreeDepth(self, pRoot): if pRoot is None: return 0 return ma...原创 2018-10-10 17:26:00 · 309 阅读 · 1 评论 -
剑指offer 二叉搜索树的后序遍历序列 python
题目描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。样例[1,2,3,4,5] true[1,2,3,6,4,5]false想法一:使用递归方法,每次取出最后一个元素,即为root,遍历所有节点,找出左子树和右子树,再分别使用该方法进行查找。class Solution: d...原创 2018-10-09 11:01:07 · 189 阅读 · 0 评论 -
剑指offer 树的子结构 python
题目描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)样例{8,8,7,9,2,#,#,#,#,4,7},{8,9,2}返回True想法一:使用先序遍历生成两棵树的序列,之后只需要判断序列是否存在即可。class Solution: def __init__(self): self.Root1_list = []...原创 2018-10-08 21:11:01 · 319 阅读 · 1 评论 -
剑指offer 把字符串转换成整数 python
题目描述将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。样例输入+2147483647 1a33输出2147483647 0想法:很简单,从后往前遍历,然后与10的次方相乘后相加,还需要判断最前...原创 2018-09-28 20:24:05 · 723 阅读 · 1 评论 -
剑指offer 重建二叉树 python
题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。样例输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6}返回二叉树头节点想法:使用递归,既然给你前序遍历序列和中序遍历序列,所以可以通过前序遍历的第一个为中间节点,每次都划分出根节点左子树和右子树的前序遍历序列和中序遍...原创 2018-09-27 18:03:27 · 501 阅读 · 0 评论 -
剑指offer 表示数值的字符串 python
题目描述请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。样例例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。但是"12e","1a3.14","1.2.3&原创 2018-11-02 18:00:18 · 658 阅读 · 0 评论 -
剑指offer 字符流中第一个不重复的字符 python
题目描述请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。样例输入 "google" 输出 "ggg#ll" (注意这里是输入流,字符是一个一个输入的)闲话:这题一开始给的两个方法,我一看还有点懵逼,没有搞懂意思.后面想.原创 2018-11-02 20:23:41 · 320 阅读 · 0 评论 -
剑指offer 数组中只出现一次的数字 python
题目描述一个整型数组里除了两个数字之外,其他的数字都出现了偶数次。请写程序找出这两个只出现一次的数字。样例返回[a,b]想法一:通常想法,使用HashMap,两边遍历。class Solution: # 返回[a,b] 其中ab是出现一次的两个数字 def FindNumsAppearOnce(self, array): # write code h...原创 2018-10-11 17:33:20 · 190 阅读 · 0 评论 -
剑指offer 构建乘积数组 python
题目描述给定一个数组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]。不能使用除法。样例A[1,2,3,4,5]B[120,60,40,30,24]想法:思路很简单,两重循环就好,只是用了下reduce函数,不知道reduce函数的可以百度下!class Solution: ...原创 2018-10-14 21:14:26 · 330 阅读 · 0 评论 -
剑指offer 和为S的连续正数序列 python
题目描述小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!样例输出所有和为S的连续正数序列。序列内按...原创 2018-10-26 19:02:23 · 600 阅读 · 0 评论 -
剑指offer 数组中的逆序对 python
题目描述在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007样例输入1,2,3,4,5,6,7,0输出7想法一:第一眼肯定想到两重循环的方法,这个比较简单就不写了那就说一种方法就是先将列表从小到大排序,然后依次循环,每次都取...原创 2018-10-26 15:10:07 · 2793 阅读 · 0 评论 -
剑指offer 第一个只出现一次的字符 python
题目描述在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).样例输入google输出4想法:第一回遍历一次生成字典,第二回遍历找到值对应的indexclass Solution: def FirstNotRepeatingChar(self, s): ...原创 2018-10-24 21:39:32 · 234 阅读 · 0 评论 -
剑指offer 连续子数组的最大和 python
题目描述HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。给一个数组,返回它的最大连续子序列...原创 2018-10-24 17:45:40 · 338 阅读 · 0 评论 -
剑指offer 二叉搜索树与双向链表 python
题目描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。样例返回双向链表的头节点想法一:首先要知道二叉搜索树的中序遍历序列就是排序的数列,之后只需要把当前节点的右子树设为下一个节点,下一个节点的左子树设为该节点.class Solution: def Convert(self, pRootOfTree): ...原创 2018-10-21 21:39:27 · 1232 阅读 · 4 评论 -
剑指offer 复杂链表的复制 python
题目描述输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)样例无想法一:分析下题目,很容易想到可以用递归来做.class Solution: # 返回 RandomListNode def Clone(s...原创 2018-10-21 21:07:28 · 270 阅读 · 0 评论 -
剑指offer 字符串的排列 python
题目描述输入一个字符串,按字典序打印出该字符串中字符的所有排列。样例例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。想法一:使用itertools库中的permutations方法直接通过字符串构造全排列组合,然后使用set去重后转list再排序# 直接使用itertools中的permutations方法对元素...原创 2018-10-17 19:58:52 · 645 阅读 · 0 评论 -
剑指offer 丑数 python
题目描述把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。样例112200想法:循环每次求乘以2,3,5后最小的数,加入到丑数列表中,最后输出最后一个丑数即可。class Solution: def GetUglyNumber_Sol...原创 2018-10-16 16:45:38 · 299 阅读 · 0 评论 -
剑指offer 两个链表的第一个公共结点 python
题目描述输入两个链表,找出它们的第一个公共结点。样例无想法一:遍历第一个链表,将所有元素添加到列表当中,遍历第二个链表,拿节点查找是否存在于列表中,如果找到了公共节点,则返回该节点,如果无,返回Noneclass Solution: def FindFirstCommonNode(self, pHead1, pHead2): list1 = [] ...原创 2018-10-15 21:37:10 · 905 阅读 · 1 评论 -
剑指offer 链表中环的入口结点 python
题目描述给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。样例如果有,返回入口节点如果没有,返回None闲话:之前Leetcode也做过一样的题,之前用的是快慢节点,如果产生环,快的一定会追上慢的,但是这回看题,完全忘了这个思路,就直接考虑使用字典以节点为键,下一个节点为值存储.想法一:使用字典以节点为键,下一个节点为值存储.如果产生环就会返回结点,否则...原创 2018-11-05 13:27:12 · 281 阅读 · 0 评论