![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
python
Lynette_bb
乱码女汉子
展开
-
Python:连续子数组的最大和
牛客网上的剑指 offer的在线编程:题目描述HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始原创 2017-08-28 16:51:19 · 802 阅读 · 0 评论 -
Python:直接选择排序算法
选择排序:空间复杂度为O(1),时间复杂度为O(n^2),算法不稳定,不具有适应性1、扫描,获取最小元素2、与排好序的后一个元素交换位置算法的稳定性是指:对于待排序的序列中,相同项的原来次序不能被改变但是选择排序算法将最小元素与排好序的后一个元素交换位置时,可能会造成相同项次序交换。算法的适应性是指:算法因原序列有序而更高效def select_sort(lst原创 2017-07-19 15:16:11 · 495 阅读 · 0 评论 -
Python:第一个只出现一次的字符
牛客网上的剑指 offer的在线编程:题目描述在一个字符串(1# -*- coding:utf-8 -*-import time'''第一个只出现一次的字符题目描述在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置'''class Solution: def FirstNotRepeatingChar原创 2017-07-21 21:43:21 · 2235 阅读 · 0 评论 -
Python:两个链表的第一个公共节点
牛客网上的剑指 offer的在线编程:题目描述输入两个链表,找出它们的第一个公共结点。思路:第一种情况:相同长度有交点两个指针一起走,步长一致,碰到第一个相同的节点 p1 == p1,退出循环,return p1。第二种情况:相同长度无交点两个指针一起走,直到走到最后一个节点,p1.next 和 p2.next都为 None,满足 相等的条件,退出循环,retu原创 2017-07-21 21:02:08 · 3030 阅读 · 1 评论 -
Python:集合(set)类型的操作
来自:http://blog.csdn.net/business122/article/details/7541486python的set和其他语言类似, 是一个无序不重复元素集, 基本功能包括关系测试和消除重复元素. 集合对象还支持union(联合), intersection(交), difference(差)和sysmmetric difference(对称差集)等数学运算.转载 2017-07-21 15:04:03 · 448 阅读 · 0 评论 -
Python:内置方法的时间复杂度
来自:http://www.cnblogs.com/work115/p/5610680.html本文翻译自Python Wiki本文基于GPL v2协议,转载请保留此协议。本页面涵盖了Python中若干方法的时间复杂度(或者叫“大欧”,“Big O”)。该时间复杂度的计算基于当前(译注:至少是2011年之前)的CPython实现。其他Python的实现(包括老版本或者尚在开转载 2017-07-21 14:57:36 · 1418 阅读 · 0 评论 -
Python:数组中的逆序对
牛客网上的剑指 offer的在线编程:题目描述在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007这道题目在牛客网上用Python解决的代码很难在1秒内完成,所以答案过不了方法一复制了牛客网用户 顧左 的答原创 2017-07-21 04:11:54 · 5280 阅读 · 0 评论 -
Python:重建二叉树
牛客网上的剑指 offer的在线编程:题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。# -*- coding:utf-8 -*-'''重建二叉树题目描述输入某二叉树的原创 2017-07-17 13:03:57 · 3766 阅读 · 0 评论 -
Python:二叉搜索树的第k个节点
牛客网上的剑指 offer的在线编程:题目描述给定一颗二叉搜索树,请找出其中的第k大的结点。例如, 5 / \ 3 7 /\ /\ 2 4 6 8 中,按结点数值大小顺序第三个结点的值为4。# -*- coding:utf-8 -*-'''二叉搜索树的第k个节点题目描述给定一颗二叉搜索树,请找出其中的第k大的结点。例如, 5 / \ 3 7 /\ /\ 2原创 2017-07-17 10:27:35 · 1023 阅读 · 0 评论 -
Python:数据流中的中位数
牛客网上的剑指 offer的在线编程:题目描述如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。# -*- coding:utf-8 -*-'''数据流中的中位数题目描述如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值原创 2017-07-17 11:20:00 · 1621 阅读 · 0 评论 -
Python:按之字形顺序打印二叉树
牛客网上的剑指 offer的在线编程:题目描述请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。# -*- coding:utf-8 -*-class TreeNode: def __init__(self, x): self.val = x原创 2017-07-15 23:48:03 · 537 阅读 · 0 评论 -
Python:对称的二叉树
牛客网上的剑指 offer的在线编程:题目描述请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。class TreeNode: def __init__(self, x): self.val = x self.left = None self.right原创 2017-07-16 02:03:46 · 899 阅读 · 0 评论 -
Python:把二叉树打印成多行
牛客网上的剑指 offer的在线编程:题目描述从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。# -*- coding:utf-8 -*-class TreeNode: def __init__(self, x): self.val = x self.left = None self.righ原创 2017-07-16 00:06:56 · 654 阅读 · 0 评论 -
Python:插入排序算法
插入排序:空间复杂度为O(1),时间复杂度为[O(n),O(n^2)],算法稳定,具有适应性1、当前需要排序的元素跟已经排好序的最后一个元素进行比较,如果满足条件则进行下面的操作,否则循环到下一个要排序的元素2、缓存当前需要排序的元素,以便找到正确的位置进行插入3、排序的元素跟排好序的元素进行比较,大的向后移(升序)4、当前要排序的元素,插入到正确的位置算法的稳定性是指:对原创 2017-07-19 15:17:40 · 481 阅读 · 0 评论 -
Python:归并排序算法
归并排序算法:空间复杂度为O(n),时间复杂度为O(n log n),算法稳定,不具有适应性1、将序列分两左右两部分2、递归,重复第一步,直到左右两部分里面的元素数量为13、合并每个左右的部分,从小到大4、完成合并算法的稳定性是指:对于待排序的序列中,相同项的原来次序不能被改变算法的适应性是指:算法因原序列有序而更高效def merge_sort(lst):原创 2017-07-19 15:19:04 · 510 阅读 · 0 评论 -
Python:最小的 k 个数
牛客网上的剑指 offer的在线编程:题目描述输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。# -*- coding:utf-8 -*-'''最小的k个数题目描述输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。'''c原创 2017-07-24 11:55:57 · 1898 阅读 · 0 评论 -
Python :顺时针打印矩阵
牛客网上的剑指 offer的在线编程:题目描述:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.# -*- coding:utf-8 -*-import nump原创 2017-06-18 11:42:11 · 1699 阅读 · 1 评论 -
Python:数字在排序数组中出现的次数
牛客网上的剑指 offer的在线编程:题目描述统计一个数字在排序数组中出现的次数。# -*- coding:utf-8 -*-'''数字在排序数组中出现的次数题目描述统计一个数字在排序数组中出现的次数。'''class Solution:# 方法一: def GetNumberOfK1(self, data, k): # wri原创 2017-07-20 02:26:11 · 1951 阅读 · 0 评论 -
Python:把字符串转换成整数
牛客网上的剑指 offer的在线编程:题目描述将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0# -*- coding:utf-8 -*-'''把字符串转换成整数题目描述将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0'''clas原创 2017-07-20 02:01:26 · 5095 阅读 · 0 评论 -
Python:矩形覆盖
牛客网上的剑指 offer的在线编程:题目描述我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?# -*- coding:utf-8 -*-'''矩形覆盖题目描述我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少原创 2017-07-20 01:00:56 · 550 阅读 · 0 评论 -
Python:斐波那契数列
牛客网上的剑指 offer的在线编程:题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。n# -*- coding:utf-8 -*-'''斐波那契数列题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。n<=39'''class Solution: def Fibonacc原创 2017-07-20 00:34:44 · 790 阅读 · 0 评论 -
Python :变态跳台阶
牛客网上的剑指 offer的在线编程:题目描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。# -*- coding:utf-8 -*-import randomclass Solution: def jumpFloorII(self, number): if number ==原创 2017-06-18 11:33:02 · 421 阅读 · 0 评论 -
Python:跳台阶
牛客网上的剑指 offer的在线编程:题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。思路:第一次跳有两种可能,一种是跳 1 级台阶,一种是跳 2 级台阶,f(n) 表示跳 n 级台阶的跳法。所以 f(n) = f(n - 1) + f(n - 2)当 n 为 1 或 2 时,return 1 ,2n 从原创 2017-07-19 21:44:43 · 1113 阅读 · 0 评论 -
Python:旋转数组的最小数字
牛客网上的剑指 offer的在线编程:题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。# -*- coding:utf-8 -*-原创 2017-07-19 20:28:30 · 833 阅读 · 0 评论 -
Python:快速排序算法
快速排序:空间复杂度为O(log n),时间复杂度为[O(n log n), O(n^2)],算法不稳定,不具有适应性1、从序列中取出一个数作为基准数2、分区,比基准数大的放基准数右边,小的放左边3、递归,重复第二步操作,直到基准数的左边和右边分别只剩一个数算法的稳定性是指:对于待排序的序列中,相同项的原来次序不能被改变算法的适应性是指:算法因为原序列有序而更高效def q原创 2017-07-19 15:23:17 · 409 阅读 · 0 评论 -
Python:堆排序算法
堆排序算法:空间复杂度为O(1),时间复杂度为O(nlogn),算法不稳定,不具有适应性1、构造初始堆:对所有的非叶子节点进行筛选(小顶堆向下筛选,大顶堆向上筛选)2、进行堆排序:交换堆顶和最后一个元素,最后一个元素为有序区,剩下的为无序区,调整无序区,变成堆之后,堆无序区交换堆顶和最后一个元素,以此类推算法的稳定性是指:对于待排序的序列中,相同项的原来次序不能被改变算法的适应原创 2017-07-19 15:21:58 · 402 阅读 · 0 评论 -
Python:冒泡排序算法
冒泡排序:空间复杂度为O(1),时间复杂度为O(n^2),改进算法的时间复杂度最好情况为O(n),算法稳定,具有适应性比较相邻元素,如为逆序,则交换位置算法的稳定性是指:对于待排序的序列中,相同项的原来次序不能被改变算法的适应性是指:算法因原序列有序而更高效def bubble_sort(lst): for i in range(len(lst)): f原创 2017-07-19 15:20:30 · 528 阅读 · 0 评论 -
Python:二叉树的下一个节点
牛客网上的剑指 offer的在线编程:题目描述给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。# -*- coding:utf-8 -*-class TreeLinkNode: def __init__(self, x): self.val = x原创 2017-07-14 16:45:30 · 1129 阅读 · 0 评论 -
Python:序列化二叉树
牛客网上的剑指 offer的在线编程:题目描述请实现两个函数,分别用来序列化和反序列化二叉树class TreeNode: def __init__(self, x): self.val = x self.left = None self.right = Noneclass Solution: def S原创 2017-07-14 18:42:55 · 1495 阅读 · 0 评论 -
Python :和为S的两个数字
牛客网上的剑指offer在线编程题:题目描述:输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 输出描述:对应每个测试案例,输出两个数,小的先输出。方法一:# -*- coding:utf-8 -*-class Solution: def FindNumbersWith原创 2017-04-10 12:52:50 · 646 阅读 · 0 评论 -
Python :调整数组顺序使奇数位于偶数前面
牛客网上的剑指 offer的在线编程:题目描述:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。方法一:# -*- coding:utf-8 -*-class Solution: def reOrderArray(self,原创 2017-06-18 11:41:03 · 934 阅读 · 0 评论 -
Python :删除链表中重复的节点
牛客网上的剑指 offer的在线编程:题目描述:在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5# -*- coding:utf-8 -*-class ListNode: def __init__(self, x): s原创 2017-06-18 11:43:20 · 2203 阅读 · 0 评论 -
Python :从尾到头打印链表
牛客网上的剑指 offer的在线编程:题目描述:输入一个链表,从尾到头打印链表每个节点的值# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: #原创 2017-06-18 11:44:20 · 3917 阅读 · 0 评论 -
Python :链表中环的入口节点
牛客网上的剑指 offer的在线编程:题目描述一个链表中包含环,请找出该链表的环的入口结点。# -*- coding:utf-8 -*-class ListNode: def __init__(self, x): self.val = x self.next = Noneclass Solution: def Entr原创 2017-07-10 11:31:47 · 615 阅读 · 0 评论 -
Python :字符流中第一个不重复的字符
牛客网上的剑指 offer的在线编程:题目描述请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。输出描述:如果当前字符流没有存在出现一次的字符,返回#字符# -*- coding:utf-8 -*-c原创 2017-07-11 22:10:07 · 2564 阅读 · 0 评论 -
Python :表示数值的字符串
牛客网上的剑指 offer的在线编程:题目描述请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。# -*- coding:utf-8 -*-import reclass原创 2017-07-11 23:35:44 · 496 阅读 · 0 评论 -
Python :正则表达式匹配
牛客网上的剑指 offer的在线编程:题目描述请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是与"aa.a"和"ab*a"均不匹配# -*- coding:原创 2017-07-12 17:22:36 · 388 阅读 · 0 评论 -
Python :替换空格
牛客网上的剑指 offer的在线编程:题目描述请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。# -*- coding:utf-8 -*-#import reclass Solution: # s 源字符串 def replaceSpace(原创 2017-07-12 17:44:36 · 950 阅读 · 0 评论 -
Python :滑动窗口的最大值
牛客网上的剑指 offer的在线编程:题目描述给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4原创 2017-07-13 20:31:49 · 1544 阅读 · 0 评论 -
Python :用两个栈实现队列
牛客网上的剑指 offer的在线编程:题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。# -*- coding:utf-8 -*-class Solution: def __init__(self): self.stack1 = [] self.stack2 = [] def原创 2017-07-13 21:17:04 · 3961 阅读 · 0 评论