python
SmileLily0202
人不要忘记自己年轻时候的梦想
展开
-
剑指offer-删除链表中重复的结点
题目描述:在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# se...原创 2019-04-16 13:11:23 · 115 阅读 · 0 评论 -
剑指offer-树的子结构
题目描述:输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = None...原创 2019-05-06 09:28:34 · 75 阅读 · 0 评论 -
剑指offer-二叉树的镜像
题目描述:思路:利用递归实现左右节点的交换# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: # 返回...原创 2019-05-06 10:18:25 · 81 阅读 · 0 评论 -
剑指offer-包含min函数的栈
题目描述:定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。'''用一个辅助栈来存放最小值 这个辅助栈工作原理: 入栈时,1)当数据栈为空时,进入栈的元素同时也进入辅助栈; 2)当它不为空时,就把该入栈元素与辅助栈的栈顶元素进行比较,若入栈元素小,则该元素同时也进入辅助栈;若不是,则对辅助栈不进行操作 ...原创 2019-05-06 13:23:11 · 89 阅读 · 0 评论 -
剑指offer-栈的压入、弹出序列
题目描述:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5 是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的 长度是相等的)# -*- coding:utf-8 -*-'''借用一个辅助的栈,遍历压栈...原创 2019-05-06 14:19:47 · 93 阅读 · 0 评论 -
剑指offer-二叉搜索树的后序遍历序列python
题目描述:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。思路:根据二叉搜索树的性质递归判断数组是否符合该性质,符合则输出yes,不符合则输出no二叉搜索树是对一个有序数组进行二分查找形成的搜索树,它指一棵空树或者具有下列性质的二叉树:若任意节点的左子树不空,则左子树上所有节点的值均小于它的根节点...原创 2019-05-10 11:28:05 · 752 阅读 · 0 评论 -
剑指offer-二叉树中和为某一个值的路径
题目描述:输入一颗二叉树的跟节点和一个整数expectNumber,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)思路:此题需要注意的地方是题目所求路径应该是从根结点开始到叶子结点。定义数组onepath存放当前遍历的路径,定义patharray数组存放所有符合条件的路...原创 2019-05-10 13:14:56 · 140 阅读 · 0 评论 -
剑指offer-复杂链表的复制
题目描述:输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)思路:第一步:在原有链表的基础上复制结点,将结点复制到原结点的后面 第二步:复制随机结点 第三步:将新旧链表分离# -*- coding:utf-8 -...原创 2019-05-10 15:37:34 · 97 阅读 · 0 评论 -
剑指offer-二叉搜索树与双向链表
题目描述:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。思路:由下图可知,二叉搜索树的中序遍历就是排序的数列,我们需要做的就是把当前节点的右子树设为下一个节点,下一个节点的左子树设为该节点图片来源:参考此篇博客# -*- coding:utf-8 -*-# class TreeNode:# def _...原创 2019-05-10 17:29:56 · 95 阅读 · 0 评论 -
剑指offer-连续子数组的最大和
题目描述:HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。给一个数组,返回它的最大连续子序列...原创 2019-05-10 20:12:21 · 105 阅读 · 0 评论 -
剑指offer-左旋转字符串
题目描述:汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!# -*- coding:utf-8 -*-class Solution: def ...原创 2019-05-10 21:22:18 · 147 阅读 · 0 评论 -
剑指offer-数据流中的中位数
题目描述:如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。# -*- coding:utf-8 -*-class Solution: def __in...原创 2019-05-10 21:37:29 · 95 阅读 · 0 评论 -
剑指offer-字符流中第一个不重复的字符
题目描述:请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。输出描述:如果当前字符流没有存在出现一次的字符,返回#字符。# -*- coding:utf-8 -*-class Solution: def __in...原创 2019-06-13 16:46:36 · 109 阅读 · 0 评论 -
剑指offer-矩形覆盖
题目描述:我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?思路:最主要的还是找规律,类似斐波那契序列问题斐波那契序列问题的解决方法有两种,一种递归循环,另一种一种非递归循环。# -*- coding:utf-8 -*-'''最主要的还是找规律,类似斐波那契序列问题'''class Solution:...原创 2019-05-04 16:41:10 · 102 阅读 · 0 评论 -
剑指offer-用两个栈实现队列
题目描述:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。思路:栈是先进后出,队列是先进先出。将栈A作为入队列,栈B作为出队列。栈A用来作入队列 栈B用来出队列,当栈B为空时,栈A全部出栈(将元素入栈的顺序翻转了)到栈B,栈B再出栈(即出队列,顺序就变成了先进先出了) class Solution: def __init__(self):...原创 2019-04-23 12:00:07 · 129 阅读 · 0 评论 -
剑指offer-翻转单词顺序列
题目描述:牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?# -*- codin...原创 2019-04-13 15:09:57 · 184 阅读 · 0 评论 -
剑指offer-和为s的两个数字
题目描述:输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。# -*- coding:utf-8 -*-class Solution: def FindNumbersWithSum(self, array, tsum): # write code here if len(ar...原创 2019-04-13 15:10:22 · 76 阅读 · 0 评论 -
剑指offer-反转链表
题目描述:输入一个链表,反转链表后,输出新链表的表头。##剑指offer里的测试输入数据是链表类型# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: # 返回Lis...原创 2019-04-13 15:10:49 · 128 阅读 · 0 评论 -
剑指offer-找出数组中的重复数字
题目描述:在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。# -*- coding:utf-8 -*-class Solution: # 这里要特别注意~找到任意重复...原创 2019-04-13 15:11:19 · 149 阅读 · 0 评论 -
剑指offer-从尾到头打印链表
题目描述:输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。思路:遍历链表,顺序存放在列表中,再逆序输出列表即可# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solut...原创 2019-04-13 15:24:40 · 94 阅读 · 0 评论 -
链表的各种问题集合-Python
1.单链表数据结构(后续每个程序开始均需先定义单链表结构,我就省略不重复写了)class LNode(object): def __new__(self,x): #数据域 self.data =x #链接域 self.next =None2.根据输入利用循环构建单链表,针对输入数据不是链表的问题,这里假设输入是列表...原创 2019-04-16 13:16:01 · 427 阅读 · 0 评论 -
剑指offer-合并两个排序的链表
题目描述:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。递归版本:# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: ...原创 2019-04-14 13:35:30 · 89 阅读 · 0 评论 -
剑指offer-链表中环的入口结点
题目描述:给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null思路:先通过快慢指针法判断链表是否存在环,此时只需要把其中的一个指针重新指向链表头部,另一个不变(还在环内),这次两个指针一次走一步,相遇的地方就是入口节点。# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# ...原创 2019-04-14 14:13:36 · 75 阅读 · 0 评论 -
剑指offer-二进制中1的个数
题目描述:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示# -*- coding:utf-8 -*-class Solution: def NumberOf1(self, n): # write code here if n >= 0: #对于正整数,将其转化成二进制数,然后求1的个数 ...原创 2019-04-14 16:13:01 · 93 阅读 · 0 评论 -
用数组、链表实现栈
'''==========数组实现栈=============== '''class MyStack(): #模拟栈 def __init__(self): self.items = [] #判断栈是否为空 def isEmpty(self): return len(self.items)==0 #返回栈的大小 d...原创 2019-04-22 15:12:28 · 227 阅读 · 0 评论 -
分别用数组、链表实现队列
'''==========数组实现队列==============='''class MyQueue(): #用两个指针分别记录队列首元素的位置、队列尾元素往后一个位置 def __init__(self): self.items = [] self.front = 0 #队列头 self.last = 0 #队列尾元素往后一个位...原创 2019-04-22 17:11:28 · 222 阅读 · 0 评论 -
如何翻转栈的所有元素
class MyStack(): #模拟栈 def __init__(self): self.items = [] #判断栈是否为空 def isEmpty(self): return len(self.items)==0 #返回栈的大小 def size(self): return len(self...原创 2019-04-22 18:27:40 · 454 阅读 · 0 评论 -
将列表以逗号连接输出一行-python输出
今天在做Zoom笔试的时候遇到的输出问题,要求你把列表以逗号链接输出数据例如:list1 = [1,2,3,4,5];输出要求格式是1,2,3,4,5关键字end可以用于将结果输出到同一行,或者在输出的末尾添加不同的字符for i in list1: print(i,end =",")输出:1,2,3,4,5,确实是一行,但是最后一个元素后面也会有一个逗号找了好久...原创 2019-08-17 15:41:18 · 3872 阅读 · 0 评论