剑指offer刷题记录
weixin_39087379
这个作者很懒,什么都没留下…
展开
-
剑指offer--判断一个数组是不是某二叉搜索树的后序遍历的结果
题目描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回true,否则返回false。假设输入的数组的任意两个数字都互不相同。# -*- coding:utf-8 -*-class Solution: def VerifySquenceOfBST(self, sequence): # write code here if len(sequence)==0: return False if len原创 2020-11-14 19:39:30 · 86 阅读 · 0 评论 -
镜像二叉树--递归交换左右child
题目描述操作给定的二叉树,将其变换为源二叉树的镜像。class Solution: # 返回镜像树的根节点 def Mirror(self, root): if not root : return root root.left,root.right=root.right,root.left self.Mirror(root.left) self.Mirror(root.right)原创 2020-07-27 12:55:40 · 74 阅读 · 0 评论 -
二叉树中和为某一值的路径--递归
输入一颗二叉树的根节点和一个整数,按字典序打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。class Solution: # 返回二维列表,内部每个列表表示找到的路径 def FindPath(self, root, expectNumber): # write code here res=[] if not root: return []原创 2020-07-26 16:54:11 · 99 阅读 · 0 评论 -
删除链表中的重复节点--重复节点不保留
题目描述在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: ...原创 2020-07-25 12:17:26 · 93 阅读 · 0 评论 -
数据流的中位数
如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。# -*- coding:utf-8 -*-class Solution: def __init__(self): self.num =[] def Insert(self, num):原创 2020-07-25 09:23:52 · 44 阅读 · 0 评论 -
字符串--字符流中第一个个数为1的元素
请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。# -*- coding:utf-8 -*-class Solution: # 返回对应char def __init__(self): self.s='' def FirstAppearingOnce(self): # write cod原创 2020-07-04 11:53:48 · 139 阅读 · 0 评论 -
python list使用
逆向索引l[::-1]l[start:end:-1],加入新元素:l.append() 在列表末尾加入新元素l.insert(index,obj) 在指定位置 插入 新元素l1.extend(l2), 将l1和l2进行拼接,等价于l1+l2删除元素:l.pop() 删除末尾的元素l.remove()del(l[i1:i2]) 删除指定的元素列表函数len(l)max(l)min(l)cmp(l1,l2)del (l[i1:i2])list(seq)方法:9–4--原创 2020-07-04 10:16:39 · 66 阅读 · 0 评论 -
字符串--第一个只出现一次的字符串
在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).(从0开始计数)1、用字典k,v计数# -*- coding:utf-8 -*-class Solution: def FirstNotRepeatingChar(self, s): # write code here d={} for i in s: if i原创 2020-07-04 10:16:13 · 68 阅读 · 0 评论 -
字符串--空格替换
将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。# -*- coding:utf-8 -*-class Solution: # s 源字符串 def replaceSpace(self, s): # write code here res=[] for i in s: r=i if i!=' ' else '%20'原创 2020-07-04 03:25:28 · 99 阅读 · 0 评论 -
字符串--翻转单词顺序列
题目:将“student. a am I”准变为“I am a student.”方法1、从后向前遍历,用append加入结果列表的末尾class Solution: def reverse_word(self,s): t=len(s) res=[] for i in range(len(s)-1,-1,-1): #生成逆向索引 if s[i]=' ': res.append(s[i+1:t]) t=i if i==0: res.append(s[i:原创 2020-07-04 01:33:06 · 103 阅读 · 0 评论 -
查找、数组--二维列表查找
题目:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。1、pythona、使用内值函数 for target in array[i],逐行遍历 # -*- coding:utf-8 -*-class Solution: # array 二维列表 def Find(self, target, array): # write c原创 2020-06-11 01:33:24 · 859 阅读 · 0 评论 -
查找、数学--十进制中1的个数
题目:求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。如1~13中含有1的个数为6个思路:1、按个、十、百、千…分别判断每一位中 1 的个数,然后相加。2、对某一位含1个数的判断:如对百位(i=100)包含1的个数:a、当百位为0时,含1的个数为 更高位 的数字 *100,1-13045,其中百位为1的数字个数为 13**100=1300个b、当百位为1时,含1的个数,需要比a再增加个零头数:1-13145,其中百位为1的数字个数为 13**100+(45+1)=1346原创 2020-06-10 17:54:42 · 582 阅读 · 0 评论 -
查找-非递减数组的旋转 中的最小元素
题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。# -*- coding:utf-8 -*-class Solution: def minNumberInRotateArray(self, rotateArray): # write code原创 2020-06-10 12:23:59 · 72 阅读 · 0 评论 -
动态规划-移格子
一个机器人位于m*n格的左上角,每次只能向右或向下移动一步,求移动到右下角格子,总共有多少条路径?def count(m,n): res=[[1 for i in range (n)] for j in range(m)] for i in renge(1,m): for j in range (1,n): res[i][j]=res[i][j-1]+res[i-1][j] return res[i][j]...原创 2020-06-08 16:35:20 · 228 阅读 · 0 评论 -
递归与循环--矩形覆盖
矩形覆盖问题我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?比如n=3时,2*3的矩形块有3种覆盖方法:# -*- coding:utf-8 -*-class Solution: def rectCover(self, number): # write code here a=1 b=2 if number<=2: ret原创 2020-05-29 00:00:41 · 89 阅读 · 0 评论 -
递归与循环--Fibonacci
T:输入一个整数n,输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1)。n<=39递归(运行慢,会超时)# -*- coding: UTF-8 -*-def Fibonacci(n): if n<=1: return n else : return Fibonacci(n-1)+Fibonacci(n-2) return res[n]for i in range(0,30):原创 2020-05-27 03:19:58 · 63 阅读 · 0 评论 -
字符串转int
将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。python 库函数 int(s),str(t),不能用每个字符判断,进行转换,缺少溢出处理:class Solution {public: int StrToInt(string str) { int i=0; long int res=0; int len=str.length(); if (len<=0)原创 2020-05-26 00:09:11 · 223 阅读 · 0 评论 -
不用+ - * /求两个数的和
开始刷题 剑指offer。这是第一次写博客,记录刷过的题~ 如果latex也能像这样可以直接预览就好了_T:不用+ - * /求两个数的和class Solution {public: int Add(int num1, int num2) { while(num2) { int temp=num1^num2; num2=(num1&num2)<<1; num1=原创 2020-05-25 21:55:59 · 70 阅读 · 0 评论