剑指offer
shaobo Huang
化繁为简,高效极致
展开
-
求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数? 1~13中包含1的数字有1、10、11、12、13因此共出现6次。
# -*- coding:utf-8 -*-#@author: James_bobo#@date: 2019/10/07class Solution: def NumberOf1Between1AndN_Solution(self, n): ones, m = 0, 1 while m <= n: ones += (n /...原创 2019-10-17 09:21:54 · 268 阅读 · 0 评论 -
输入一个整型数组,数组里有整数也有负数。 数组中一二或连续的多个整数组成一个子数组。求所有子数组的和的最大值。 要求时间复杂度为O(n)
# -*- coding:utf-8 -*-#@author: James_Bobo#@date: 2019/10/07class Solution: def FindGreatestSumOfSubArray(self, array): if array == None or len(array) <= 0: return 0 ...原创 2019-10-17 09:16:55 · 271 阅读 · 0 评论 -
二叉树的深度(剑指 Offer 55 - I)
'''输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。'''# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# ...原创 2019-03-24 21:34:04 · 193 阅读 · 0 评论 -
二叉树的镜像(剑指 Offer 27)
'''操作给定的二叉树,将其变换为源二叉树的镜像。二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5'''# -*- c...原创 2019-03-24 21:31:02 · 230 阅读 · 0 评论 -
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号
# -*- coding:utf-8 -*-class Solution: def Add1(self, num1, num2): while(num2!=0): yihuo = num1^num2 yu = num1&num2 num2 = yu<<1 n...原创 2019-03-24 21:29:08 · 608 阅读 · 0 评论 -
循环左移字符串
'''汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!'''# -*- coding:utf-8 -*-class Solution: d...原创 2019-03-24 21:28:19 · 583 阅读 · 0 评论 -
求1+2+3+...+n(剑指 Offer 64)
# -*- coding:utf-8 -*-class Solution: def Sum_Solution(self, s): return (pow(n,2)+n)>>1if __name__ == '__main__': s=Solution() n=5 print(s.Sum_Solution(n))原创 2019-03-24 21:30:23 · 147 阅读 · 0 评论 -
在一个字符串中找到第一个只出现一次的字符, 并返回它的位置
在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符, 并返回它的位置, 如果没有则返回 -1(需要区分大小写).# -*- coding:utf-8 -*-class Solution: def FirstNotRepeatingChar(self, s): # write code here if l...原创 2019-03-16 15:25:28 · 1256 阅读 · 0 评论 -
丑数
把只包含质因子2、3和5的数称作丑数(Ugly Number)。 例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数# -*- coding:utf-8 -*-import mathclass Solution: def GetUglyNumber_Solution(self, index): if(i...原创 2019-03-16 15:20:59 · 102 阅读 · 0 评论 -
反转链表
输入一个链表,反转链表后,输出新链表表头# -*- coding:utf-8 -*-class ListNode: def __init__(self, x): self.val = x self.next = Noneclass Solution: # 返回ListNode def ReverseList1(self, pHead):...原创 2019-03-15 09:15:31 · 101 阅读 · 0 评论 -
青蛙跳台阶(剑指 Offer 10- II)
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)# -*- coding:utf-8 -*-class Solution: def jumpFloor(self, number): # write code here a,b = 1,2 for i in range(1,...原创 2019-03-15 09:14:39 · 128 阅读 · 0 评论 -
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项
# -*- coding:utf-8 -*-class Solution: #内存超负荷 def Fibonacci1(self, n): # write code here if n == 0 or n == 1: return n else: return self.Fibonac...原创 2019-03-15 09:13:06 · 1365 阅读 · 0 评论 -
旋转数组
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。# -*- coding:utf-8 -*-class Solution: def minNumberInRot...原创 2019-03-15 09:10:13 · 1071 阅读 · 0 评论 -
python:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
# -*- coding:utf-8 -*-class Solution: def __init__(self): self.stack1 = [] self.stack2 = [] def push(self, node): # write code here self.stack1.append(node) ...原创 2019-03-15 09:09:11 · 1386 阅读 · 0 评论 -
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。
#-*- coding:utf-8 -*-class TreeNode: def __init__(self, x): self.val = x self.left = None self.right = Noneclass Solution: # 返回构造的TreeNode根节点 def reConstructB...原创 2019-03-15 09:08:30 · 624 阅读 · 0 评论 -
输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。
# -*- coding:utf-8 -*-class ListNode: def __init__(self, x): self.val = x self.next = None class Solution1: # 返回从尾部到头部的列表值序列,例如[1,2,3] def printListFromTailToHea...原创 2019-03-15 09:07:38 · 380 阅读 · 0 评论 -
替换空格python实现
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。# -*- coding:utf-8 -*-class Solution: # s 源字符串 def replaceSpace(self, s): str = '' for i in s:...原创 2019-03-15 09:06:17 · 1490 阅读 · 0 评论 -
【剑指offer】
class Solution: # array 二维列表 def Find(self, target, array): row = len(array) #if target < array[0][0] or target > array[row-1][row-1]: #return False #...原创 2019-03-15 09:03:03 · 276 阅读 · 0 评论