自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 收藏
  • 关注

原创 剑指Offer-68 树中两个结点的最低公共祖先

题目:给出一个二叉树,输入两个树节点,求它们的最低公共祖先。一个树节点的祖先节点包括它本身。注意:输入的二叉树不为空;输入的两个节点一定不为空,且是二叉树中的节点;解答:# Definition for a binary tree node.# class TreeNode(object):# def __init__(self, x):# self....

2018-12-10 23:02:54 139

原创 剑指Offer-67 把字符串转换成整数

题目:请你写一个函数StrToInt,实现把字符串转换成整数这个功能。当然,不能使用atoi或者其他类似的库函数。样例输入:“123”输出:123注意:你的函数应满足下列条件:忽略所有行首空格,找到第一个非空格字符,可以是 ‘+/−+/−’ 表示是正数或者负数,紧随其后找到最长的一串连续数字,将其解析成一个整数;整数后可能有任意非数字字符,请将其忽略;从前往后遍历时,如果第一段...

2018-12-10 22:01:18 148

原创 剑指Offer-66 构建乘积数组

题目:给定一个数组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]。不能使用除法。样例输入:[1, 2, 3, 4, 5]输出:[120, 60, 40, 30, 24]思考题:能不能只使用常数空间?(除了输出的数组之外解答:class Solution(o...

2018-12-10 16:24:16 137

原创 剑指Offer-65 不用加减乘除做加法

题目:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、×、÷ 四则运算符号。样例输入:num1 = 1 , num2 = 2输出:3解答:由于Python的int型位数是无限拓展的,用Python会出bug,所以用了Javaclass Solution { public int add(int num1, int num2) { int [] bit...

2018-12-10 13:24:40 104

原创 剑指Offer-63 股票的最大利润

题目:这道题其实是leetcode的题目,121. Best Time to Buy and Sell Stock(https://leetcode.com/problems/best-time-to-buy-and-sell-stock/)假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖交易该股票可能获得的利润是多少?例如一只股票在某些时间节点的价格为[9, 11, 8, 5, 7,...

2018-12-09 23:43:34 100

原创 剑指Offer-62 圆圈中最后剩下的数字

题目:0, 1, …, n-1这n个数字(n>0)排成一个圆圈,从数字0开始每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。样例输入:n=5 , m=3输出:3解答:class Solution(object): def lastRemaining(self, n, m): """ :type n: int ...

2018-12-09 22:33:52 132

原创 剑指Offer-61 扑克牌中的顺子

题目:从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,大小王可以看做任意数字。为了方便,大小王均以0来表示,并且假设这副牌中大小王均有两张。样例1输入:[8,9,10,11,12]输出:true样例2输入:[0,8,9,11,12]输出:true解答:# -*- coding:utf-8 -*-cla...

2018-12-09 21:34:32 190 1

原创 剑指Offer-60 n个骰子的点数

题目:将一个骰子投掷n次,获得的总点数为s,s的可能范围为n~6n。掷出某一点数,可能有多种掷法,例如投掷2次,掷出3点,共有[1,2],[2,1]两种掷法。请求出投掷n次,掷出n~6n点分别有多少种掷法。样例1输入:n=1输出:[1, 1, 1, 1, 1, 1]解释:投掷1次,可能出现的点数为1-6,共计6种。每种点数都只有1种掷法。所以输出[1, 1, 1, 1, 1, 1]。...

2018-12-09 20:30:35 276

原创 剑指Offer-59 滑动窗口的最大值

题目:给定一个数组和滑动窗口的大小,请找出所有滑动窗口里的最大值。例如,如果输入数组[2, 3, 4, 2, 6, 2, 5, 1]及滑动窗口的大小3,那么一共存在6个滑动窗口,它们的最大值分别为[4, 4, 6, 6, 6, 5]。注意:数据保证k大于0,且k小于等于数组长度。样例输入:[2, 3, 4, 2, 6, 2, 5, 1] , k=3输出: [4, 4, 6, 6, 6...

2018-12-09 16:29:01 105

原创 剑指Offer-9 用两个栈实现队列

题目:请用栈实现一个队列,支持如下四种操作:push(x) – 将元素x插到队尾;pop(x) – 将队首的元素弹出,并返回该元素;peek() – 返回队首元素;empty() – 返回队列是否为空;注意:你只能使用栈的标准操作:push to top,peek/pop from top, size 和 is empty;如果你选择的编程语言没有栈的标准库,你可以使用list或者...

2018-12-08 23:22:08 122

原创 剑指Offer-3 找出数组中重复的数字

题目:给定一个长度为 n 的整数数组 nums,数组中所有的数字都在 0∼n−1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。注意:如果某些数字不在 0∼n−1 的范围内,或数组中不包含重复数字,则返回 -1;样例给定 nums = [2, 3, 5, 4, 3, 2, 6, 7]。返回 2 或 3。解答:解...

2018-12-08 22:32:23 205

原创 剑指Offer-30 包含min函数的栈

题目:设计一个支持push,pop,top等操作并且可以在O(1)时间内检索出最小元素的堆栈。解答:class MinStack(object): def __init__(self): """ initialize your data structure here. """ self.data = [] ...

2018-12-08 21:50:51 92

原创 剑指Offer-58 翻转单词顺序

题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student.",则输出"student. a am I"。解答:class Solution(object): def reverseWords(self, s): """ :type s: str ...

2018-12-08 17:06:28 73

原创 剑指Offer 和为S的连续正数序列

题目:输入一个正数s,打印出所有和为s的连续正数序列(至少含有两个数)。例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以结果打印出3个连续序列1~5、4~6和7~8。样例输入:15输出:[[1,2,3,4,5],[4,5,6],[7,8]]解答:class Solution(object): def findContinuousSequence(self, ...

2018-12-08 16:11:09 168

原创 剑指Offer-57 和为S的两个数字

题目:输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。输出描述:对应每个测试案例,输出两个数,小的先输出。解答:# -*- coding:utf-8 -*-class Solution(object): def FindNumbersWithSum(self, nums, target): ...

2018-12-08 15:47:43 71

原创 剑指Offer 数组中唯一只出现一次的数字

题目:在一个数组中除了一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。你可以假设满足条件的数字一定存在。思考题:如果要求只使用 O(n) 的时间和额外 O(1) 的空间,该怎么做呢?样例输入:[1,1,1,2,2,2,3,4,4,4]输出:3解答:import sysclass Solution(object): def findNumberAp...

2018-12-08 15:29:34 243

原创 剑指Offer-56 数组中只出现一次的两个数字

题目:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。你可以假设这两个数字一定存在。样例输入:[1,2,3,3,4,4]输出:[1,2]解答:class Solution(object): def findNumsAppearOnce(self, nums): """ :type nums: List[int] :rtype: ...

2018-12-07 23:12:49 98

原创 剑指Offer 平衡二叉树

题目:输入一棵二叉树的根结点,判断该树是不是平衡二叉树。如果某二叉树中任意结点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。注意:规定空树也是一棵平衡二叉树。解答:# Definition for a binary tree node.# class TreeNode(object):# def __init__(self, x):# self....

2018-12-07 20:26:05 87

原创 剑指Offer-55 二叉树的深度

题目:输入一棵二叉树的根结点,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。样例输入:二叉树[8, 12, 2, null, null, 6, 4, null, null, null, null]输出:3解答:# Definition for a binary tree node.# class TreeNode:# ...

2018-12-07 20:05:29 74

原创 剑指Offer-54 二叉搜索树的第k个结点

题目:给定一棵二叉搜索树,请找出其中的第k小的结点。你可以假设树和k都存在,并且1≤k≤树的总结点数。样例输入:root = [2, 1, 3, null, null, null, null] ,k = 32/ 1 3输出:3解答:class Solution(): def kthNode(self, root, k): """ :t...

2018-12-07 19:51:36 80

原创 剑指Offer 数组中数值和下标相等的元素

题目:一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0到n-1之内。在范围0到n-1的n个数字中有且只有一个数字不在该数组中,请找出这个数字。样例输入:[0,1,2,4]输出:3解答:二分查找,O(logn),循环解法:class Solution(object): def getNumberSameAsIndex(self, nums): ...

2018-12-07 16:46:58 136

原创 剑指Offer 0到n-1中缺失的数字

题目:一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0到n-1之内。在范围0到n-1的n个数字中有且只有一个数字不在该数组中,请找出这个数字。样例输入:[0,1,2,4]输出:3解答:这道题要注意一种情况,即缺失的数字为n-1,如 [0, 1, 2, 3] 应该返回 4class Solution(object): def getMissingN...

2018-12-07 00:22:19 442

原创 剑指Offer-53 数字在排序数组中出现的次数

题目:统计一个数字在排序数组中出现的次数。例如输入排序数组[1, 2, 3, 3, 3, 3, 4, 5]和数字3,由于3在这个数组中出现了4次,因此输出4。样例输入:[1, 2, 3, 3, 3, 3, 4, 5] , 3输出:4解答:class Solution(object): def getNumberOfK(self, nums, k): """ ...

2018-12-06 22:34:59 92

原创 剑指Offer-42 连续子数组的最大和

题目:输入一个 非空 整型数组,数组里的数可能为正,也可能为负。数组中一个或连续的多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。样例输入:[1, -2, 3, 10, -4, 7, 2, -5]输出:18解答:class Solution(object): def maxSubArray(self, nums): """ ...

2018-12-06 16:07:35 108

原创 剑指Offer-52 两个链表的第一个公共结点

题目:输入两个链表,找出它们的第一个公共结点。解答:# Definition for singly-linked list.# class ListNode(object):# def __init__(self, x):# self.val = x# self.next = Noneclass Solution(object): ...

2018-12-06 15:10:53 74

原创 剑指Offer-51 数组中的逆序对

题目:在数组中的两个数字如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。样例输入:[1,2,3,4,5,6,0]输出:6解答:class Solution(object): def inversePairs(self, nums): """ :type nums: List[int] ...

2018-12-06 14:31:57 68

原创 剑指Offer 字符流中第一个只出现一次的字符

题目:请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符”go”时,第一个只出现一次的字符是’g’。当从该字符流中读出前六个字符”google”时,第一个只出现一次的字符是’l’。如果当前字符流没有存在出现一次的字符,返回#字符。样例输入:“google”输出:“ggg#ll”解释:每当字符流读入一个字符,就进行一次判断并输出当前的第一个只出现一次的...

2018-12-05 23:21:30 74

原创 剑指Offer-50 字符串中第一个只出现一次的字符

题目:在字符串中找出第一个只出现一次的字符。如输入"abaccdeff",则输出b。如果字符串中不存在只出现一次的字符,返回#字符。解答:class Solution: def firstNotRepeatingChar(self, s): """ :type s: str :rtype: str """ ...

2018-12-05 23:19:36 131

转载 剑指Offer-49 丑数

题目:把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。解答:class Solution {public: int GetUglyNumber_Solution(int index) { if (index < 7)return...

2018-12-05 21:55:07 100

原创 剑指Offer-48 最长不含重复字符的子字符串

题目:请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。假设字符串中只包含从’a’到’z’的字符。样例输入:“abcabc”输出:3解答:class Solution: def longestSubstringWithoutDuplication(self, s): """ :type s: str :rtype: int """ d ...

2018-12-05 11:44:25 177

原创 剑指Offer-47 礼物的最大价值

题目:在一个m×n的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向左或者向下移动一格直到到达棋盘的右下角。给定一个棋盘及其上面的礼物,请计算你最多能拿到多少价值的礼物?样例:输入:[ [2,3,1], [1,7,1], [4,6,1]]输出:19解释:沿着路径 2→3→7→6→1 可以得到拿到最大价值礼物...

2018-12-05 00:53:28 128

原创 剑指Offer-41 数据流中的中位数

题目:如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。解答:# -*- coding:utf-8 -*-import heapqclass MinHeap(...

2018-12-05 00:39:56 56

原创 剑指Offer-46 把数字翻译成字符串

题目:给定一个数字,我们按照如下规则把它翻译为字符串:0翻译成”a”,1翻译成”b”,……,11翻译成”l”,……,25翻译成”z”。一个数字可能有多个翻译。例如12258有5种不同的翻译,它们分别是”bccfi”、”bwfi”、”bczi”、”mcfi”和”mzi”。请编程实现一个函数用来计算一个数字有多少种不同的翻译方法。解答:class Solution: def getTr...

2018-12-05 00:39:47 134

原创 剑指Offer 把二叉树打印成多行

题目:从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。解答:# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneimport Queu...

2018-12-05 00:39:37 60

原创 剑指Offer 按之字形顺序打印二叉树

题目:请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。解答:# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None...

2018-12-05 00:39:22 67

原创 剑指Offer-227 把数组排成最小的数

题目:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。解答:# -*- coding:utf-8 -*-class Solution: def PrintMinNumber(self, numbers): # return "".join(...

2018-12-05 00:39:13 59

原创 剑指Offer-40 最小的K个数

题目:输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。解答:# -*- coding:utf-8 -*-import heapqclass MaxHeap(): def __init__(self): self.q = [] def push(self, e): he...

2018-12-04 13:13:23 72

原创 剑指Offer-39 数组中出现次数超过一半的数字

题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。解答:# -*- coding:utf-8 -*-class Solution: def MoreThanHalfNum_Solution(self, numbers...

2018-12-04 13:09:48 65

原创 剑指Offer-38 字符串的排列

题目:输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。解答:# -*- coding:utf-8 -*-class Solution: def Permutation(self, ss): if len(ss) == 0: ...

2018-12-04 13:06:00 86

原创 剑指Offer-36 二叉搜索树与双向链表

题目:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。解答:# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self...

2018-12-04 13:04:08 132

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除