自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 连续子数组最大和O(n)两种解法:双指针 动态规划

题目描述HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。给一个数组,返回它的最大连续子序列...

2018-11-29 19:14:31 1432 1

原创 【剑指offer】数据流中的中位数(最大最小堆实现)

题目描述如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。构建一个最大堆和最小堆,并且保证最大堆中的数据都要小于最小堆的数据,也就是最大堆的根节点小于最...

2018-11-27 23:17:48 458

原创 最大最小堆整理 & heapq最小最大堆

参考资料:关于堆排序的算法参考:https://www.cnblogs.com/chengxiao/p/6129630.html关于堆排序的视频演示:https://www.bilibili.com/video/av18980178/对于一个数组,可以使用min()和max()来求最大最小值而不是使用堆,但是根据python的wiki:https://wiki.python.org/moi...

2018-11-27 20:42:24 14667 1

原创 【剑指offer】最小的k个数(两种解法)

题目描述输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。解法1使用partition函数可以知道,使用==O(N)==的时间复杂度就可以找出第K大的数字,并且左边的数字比这个数小,右边的数字比这个数字大。因此可以取k为4,然后输出前k个数字,如果需要排序的话再对结果进行排序class Solution: d...

2018-11-26 20:13:24 873

原创 【剑指offer】数组中出现次数超过数组长度一半的数字(三种解法)

题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。如果使用时间复杂度为O(n),可以构建hash map,但是应该会存在冲突,并且要设计数据结构==在python3中,如果要让map输出list,在前面要加list,要不然只...

2018-11-25 19:32:52 2590

原创 数组中任意第k大的数字

模仿partion方法,当high=low小于k的时候,在后半部分搜索,当high=low大于k的时候,在前半部分搜索。与快排不同的是,每次都减少了一半的排序。def partitionOfK(numbers, start, end, k): if k < 0 or numbers == [] or start < 0 or end >= len(numbers) or...

2018-11-25 18:52:27 629

原创 流数据处理

流数据处理strom在2011年Storm开源之前,由于Hadoop的火红,整个业界都在喋喋不休地谈论大数据。Hadoop的高吞吐,海量数据处理的能力使得人们可以方便地处理海量数据。但是,Hadoop的缺点也和它的优点同样鲜明——延迟大,响应缓慢,运维复杂。有需求也就有创造,在Hadoop基本奠定了大数据霸主地位的时候,很多的开源项目都是以弥补Hadoop的实时性为目标而被创造出来。而在这个节...

2018-11-23 16:35:55 2932

原创 理解Spark

SparkHadoop框架存在的问题JobTracker是MapReduce的集中处理点,存在单点故障的问题以MapReduce task数目作为资源的表示比较简单,没有考虑CPU和内存占用情况任务集中导致源代码复杂,增加bug修复和系统维护的难度RDDRDD(Resilient Distributed Dataset)是一个可读的、可分区的分布式数据集,任何数据在spark中都可...

2018-11-23 16:00:51 271

原创 理解Hadoop

Hadoop Haloophadoop解决迭代的MapReduce问题,有很多大数据分析需要迭代计算,而MapReduce框架对迭代计算支持度不够MapReduce产生的问题每次执行都需要重新装在数据,重新处理,但迭代过程中,有动态数据和静态数据两类,静态数据处理带来额外的开销迭代终止稳定点的判断过程在每次迭代中需要额外的MapReduce计算MapReduce局限性任务调度开销...

2018-11-23 11:15:41 297 1

原创 理解MapReduce

执行流程创建一个map函数处理一个基于key/value对的数据集合,输出中间数据,并写入磁盘创建一个reduce函数来合并处理中间数据,具有相同key值的value调用被分布到多台机器上reduce可以分布到多台机器上,例如hash(key) mod R, R为分区数目,一个job包含多个task,每个reduce任务产生一个输出文件,因此有R个输出文件。实现模型执行过程首先...

2018-11-23 10:13:52 200

原创 分布式一致性算法 Paxos & Raft

分布式一致性算法paxos & raft1 paxos算法paxos算法通过多个监督者来增强可靠性通过监督者投票表决状态变化保证所有数据访问都遵从这种表决多数派写客户端写入 W >= N/2 + 1个节点,节点之间平等多数派读W + R > N; R >= N/2 + 1容忍最多(N - 1) / 2个节点损坏法定集合将一个超过半数的节点集合成为...

2018-11-23 09:55:33 672

原创 GFS google file system谷歌文件系统

GFSGFS 也就是 google File System,Google公司为了存储海量搜索数据而设计的专用文件系统。GFS是一个可扩展的分布式文件系统,用于大型的、分布式的、对大量数据进行访问的应用。它运行于廉价的普通硬件上,并提供容错功能。它可以给大量的用户提供总体性能较高的服务。master节点master节点只存放元数据:文件和chunk命名空间文件和chunk的对应关系...

2018-11-22 20:37:56 1168 1

原创 分布式数据库DynamoDB

DynamoDBDynamoDB是分布式数据库,设计成用来解决数据库管理、性能、可扩展性和可靠性等核心问题。开发人员可以创建一个数据库表,该表可以存储和检索任何数量的数据。DynamoDB改进了Memcached的一致性hash算法采用了虚拟节点的机制改进了一致性hash算法,有Q个虚拟节点,S个物理节点,那么为每一个物理节点分配Q/S个虚拟节点,其中Q>>S,虚拟节点的好处是能...

2018-11-22 19:19:23 5790

原创 Memcached分布式缓存

Memcached分布式缓存Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。memcached存储两种形式的数据:key-val数据和sql数据为了防止内存碎片化,使用slab-allocator来分配存储空间。可以看到很多个相同大小的chunck组成一个s...

2018-11-22 18:36:30 188

原创 【剑指offer】字符串的全排列

题目描述输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。输入描述输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。注意有可能重复,因此需要判断注意list的append方法和list的+方法的区别append方法在list后面添加元素+方...

2018-11-21 20:27:54 155

原创 【剑指offer】序列化和反序列化二叉树

题目描述请实现两个函数,分别用来序列化和反序列化二叉树序列化二叉树先序遍历二叉树 def recursionSerialize(self, root): series = '' if root == None: series += ',$' else: series += (',' + s...

2018-11-20 19:32:36 149

原创 【剑指offer】二叉搜索树与双向连接

题目描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。普通的二叉树也可以转换成双向链表,只不过不是排序的思路:与中序遍历相同采用递归,先链接左指针,再链接右指针代码1,更改doubleLinkedList,最后返回list的第一个元素:class TreeNode: def __init__(self...

2018-11-19 19:42:07 95

原创 【剑指offer】复杂链表的复制

题目描述输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空) def CloneNodes(self, pHead): pNode = pHead while pNode: ...

2018-11-14 22:11:40 76

原创 【剑指offer】二叉树中和为某一值的路径(回溯法)【python】

题目描述输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)思路:暴力遍历二叉树每一个节点,采用递归回溯的思想。建立一个全局的results数组保存所有结果的信息,如果遍历到了叶子节点并且和正好为expect,那么将此时的数组加入到result...

2018-11-13 20:59:42 752

原创 【剑指offer】二叉搜索树的后序遍历

题目描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。二叉搜索树是左子树都比跟小,右子树都比跟大数组的最后一个数字为root,然后一串比root小的为左子树,一串比root大的为右子树,当右子树中有比root小的返回false,可以用递归的方式判断左子树和右子树class Solution: ...

2018-11-13 19:11:00 104

原创 【剑指offer】之字形打印二叉树【python】

题目描述请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。在上一篇博客中:层次遍历,每一层在一行输出中,只需要将奇数行的result反转一下就行了另外一种方法就是,需要反转队列的结果,想到就是用到栈需要用到两个栈,依次入栈,出栈,输出就行如果打印是奇数层,先保存左节点再保存右节点到栈,如果是偶...

2018-11-12 17:14:23 694

原创 【剑指offer】分行从上到下打印二叉树,层次遍历,每一层在一行输出

与上一篇博客层次遍历二叉树不同,这次是需要将每一层打印在同一行,这就需要判断每一层的元素:注意到,将每一层打印完了之后,下面的一层也全部进入到了队列,因此采用一个计数器:nextLevel来计算下一层的个数,使用toBeList计算这层还么有打印完的个数初始nextLevel = 0, toBeList = 1,之后每次放入一个队列,nextLevel+1,每次出一个队列,toBeList-...

2018-11-12 16:37:12 3213

原创 【剑指offer】从上往下打印二叉树,层次遍历二叉树【python】

题目描述从上往下打印出二叉树的每个节点,同层节点从左至右打印。采用队列的思想,出队列则打印,然后左节点右节点分别入队列注意如果需要两个不同的列表,一定不能用list = result = []这样#-*- coding:utf-8 -*-class TreeNode: def __init__(self, x): self.val = x self...

2018-11-11 20:35:53 432

原创 【剑指offer】栈的压入、弹出序列

题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)解法:先压栈,知道与出栈序列匹配上,如果栈顶元素与出栈序列继续匹配,那么继续出栈,否则...

2018-11-10 12:15:51 105

原创 【剑指offer】包含min函数的栈【python】

题目描述定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。算法思想,采用一个辅助栈的形式。如果push了一个比较大的数字,那么仍然在辅助栈中push最小值,这样pop之后这个大数字之前或者之后,辅助栈顶仍然是栈中的全局最小如果push了一个比较小的数字,那么将这个小数字push到辅助栈中,这样辅助栈的top仍然是最小,pop这个小数字之...

2018-11-10 10:46:26 173

原创 【剑指offer】顺时针打印矩阵【python】

题目描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 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.只能够输入二维矩阵,为了使得代码具有鲁棒性:使用try:except:来处理异常情况# -*- coding...

2018-11-09 16:25:48 134

原创 【剑指offer】对称的二叉树【python】

请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。class TreeNode: def __init__(self, x): self.val = x self.left = None self.right = Noneclass Solution: def sys...

2018-11-08 12:15:40 127

原创 【剑指offer】二叉树镜像【python】

题目描述操作给定的二叉树,将其变换为源二叉树的镜像。class TreeNode: def __init__(self, x): self.val = x self.left = None self.right = Noneclass Solution: # 返回镜像树的根节点 def Mirror(self, ro...

2018-11-08 11:33:26 224

原创 【剑指offer】树的子结构【python】

输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)首先通过递归来遍历A树,如果根节点相同,那么判断是不是子结构,如果根节点不同,判断左节点,再判断右节点 def HasSubtree(self, pRoot1, pRoot2): # write code here if pRoot1 == None or pRo...

2018-11-07 20:26:27 318

原创 【剑指offer】合并两个排序的链表【python】

题目描述输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。用递归代码会很简洁#-*- coding:utf-8 -*-class ListNode: def __init__(self, x): self.val = x self.next = Noneclass Solution: # 返回合并后...

2018-11-06 21:39:03 127

原创 【剑指offer】反转链表

题目描述输入一个链表,反转链表后,输出新链表的表头。class ListNode: def __init__(self, x): self.val = x self.next = Noneclass Solution: # 返回ListNode def ReverseList(self, pHead): # write ...

2018-11-06 21:22:50 99

原创 【剑指offer】链表中入口环节点

题目描述给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。使用快慢指针的方法首先判断是否存在环,如果存在,把meetNode输出判断环的长度根据环的长度设置快慢指针,如果相遇,则是入口节点class ListNode: def __init__(self, x): self.val = x self.next = Non...

2018-11-06 10:17:08 370

原创 【剑指offer】链表中倒数第k个节点【python】代码的鲁棒性

输入一个链表,输出该链表中倒数第k个结点。代码的鲁棒性由于鲁棒性对软件开发非常重要,所以面试官在招聘的时候对应聘者写出的代码是否鲁棒性非常关注,***防御性编程***是一种习惯。如果代码不够鲁棒,那么面试官可以找出3中办法让这段代码崩溃。输入为空指针输入链表长度小于k输入的k为0,或者小于等于0采用双指针的方式编写代码#-*- coding:utf-8 -*-class Lis...

2018-11-05 21:36:22 354

原创 【剑指offer】调整数组使得奇数在偶数前面【python】

题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。看到这个二分类问题,首先想到快速排序的partition函数,但是这个又有点不同如果不需要保证相对位置不变,可以采用时间复杂度O(N),空间O(1)的解法,采用两个指针,如果偶数在前,则交换顺序。class Solut...

2018-11-05 21:06:00 99

原创 【剑指offer】表示数值的字符串【python】

数字的格式可以用A[.[B]][E|eC]或者.B[E|eC]表示,其中A和C都是整数(可以有符号也可以没有),B是一个无符号数采用遍历的方式发现很困难的时候,需要采取聪明一点的方式如果遍历到e,那么之前不能有e,并且e不能再末尾如果遍历到.,那么之前不能有.,并且之前不能有e如果遍历到符号,那么如果之前有符号,只能够出现在e的后面,如果之前没符号,那么符号只能出现在第一位,或者出现在...

2018-11-05 19:57:54 468 1

原创 Colab读取大型文件ConnectionResetError: [Errno 104] Connection reset by peer报错

python socket 编程,sftp远程读日志文件,取最后的30行返回。收到ConnectionResetError: [Errno 104] Connection reset by peer报错。最后找到原因是send的数据size太大,服务器端重置了连接!pip install -U -q PyDrivefrom pydrive.auth import GoogleAuthfro...

2018-11-01 21:15:44 3549

空空如也

空空如也

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

TA关注的人

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