自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 常见排序算法

1.冒泡排序 def bubble_sort(alist): """冒泡排序""" n = len(alist) for j in range(0,n-1): ...

2019-09-16 22:39:39

阅读数 35

评论数 0

原创 (剑指offer)55.二叉树的深度

输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 class TreeNode: def __init__(self, x): self.val = x self.left = None...

2019-09-15 17:31:09

阅读数 20

评论数 0

原创 (剑指offer)34.二叉树中和为某一值的路径

输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前) class TreeNode: def __init__(self, x): ...

2019-09-15 16:36:11

阅读数 16

评论数 0

原创 (剑指offer)33.二叉搜索树的后序遍历

题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 思路: 递归。最后一个数字是树的根节点,第一部分是左子树节点的值,都比根节点小。第二部分是右子树节点的值,都比根节点大。 class Solutio...

2019-09-14 22:08:26

阅读数 8

评论数 0

原创 (剑指offer)28.对称二叉树

题目描述 请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。 思路: 1.针对前序遍历定义一种对称的遍历算法,即:根-右孩子-左孩子 如果对称遍历和前序遍历相同则是对称子树。 2.特殊情况,节点值全部相同。(考虑保存叶子节点None指针即...

2019-09-14 19:48:04

阅读数 26

评论数 0

原创 (剑指offer)27.二叉树的镜像

思路: 先前序遍历这颗树的每个节点,如果遍历到的节点有子节点,就交换它的两个子节点。当交换完所有非叶节点的左右节点之后就得到了树的镜像。 class TreeNode: def __init__(self, x): self.val = x self.lef...

2019-09-14 17:27:16

阅读数 12

评论数 0

原创 (剑指offer)26.树的子结构

输入两棵树A和B,判断B是不是A的子结构。 思路: 这道题我理解错了,其实B只有一个节点,这个节点也是A的子结构。 1.树A中查找与根节点的值一样的节点。(先比较根AB,在比较根A的左孩子与根B,最后比较根A的右孩子和根B) 2.树A中根节点的子树和树B是否具有相同的结构。 class TreeN...

2019-09-14 13:52:18

阅读数 15

评论数 0

原创 (剑指offer)52.两个链表的第一个公共节点

输入两个链表,找出它们的第一个公共结点。 思路: 1.先遍历两个链表,计算出长度 2.让长度较长的先走 先走步数=长度差 3.然后再两个链表一起走,值相同的第一个就是两个链表第一个公共节点 时间复杂度:o(m+n) 空间复杂度:比实现两个栈的思想低。 class ListNode: de...

2019-09-13 18:38:01

阅读数 9

评论数 0

原创 (剑指offer)25.合并两个有序链表

输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 思路:依次比较进行递归 class ListNode: def __init__(self,x): self.val = x self.next = None cl...

2019-09-13 17:27:49

阅读数 16

评论数 0

原创 (剑指offer)35.复杂链表的复制

输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空) 思路: 1.先复制链表节点的值放在原来的节点后面,组成一个新的链表 2.处理复杂...

2019-09-13 17:25:44

阅读数 8

评论数 0

原创 (剑指offer)24.反转链表

输入一个链表,反转链表后,输出新链表的表头。 思路: 1.设置两个指针,分别指向当前结点的前preNode后nextNode 2.将当前结点的next指向前一个结点preNode。 3.将当前结点和nextNode都向前移一个(preNode,pHead = pHead,nextNode) cla...

2019-09-12 19:58:04

阅读数 21

评论数 0

原创 (剑指offer)23.链表中环的入口节点

给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出None。 思路: 1.找相遇点:设置一个快指针pFast一个慢指针pSlow,先找到一个相遇点,一定在环中 2.计算环的长度: 从相遇点出发,到相遇点结束-1,即为环的长度。 3.pFast:从pHead+环的长度出发;pSlow从...

2019-09-12 19:53:28

阅读数 7

评论数 0

原创 (小米)手撕数据库

面试小米测开的时候,面试官出了一道数据库的题,当时不是很理解。 题目是这样: 1.给你一个学生表 里面有姓名 科目 成绩,怎么查找课程成绩最高的学生 (那么我就把我二面的时候的数据表拿来研究了。) use aa; create table student_num ( name varchar(20...

2019-09-06 12:00:15

阅读数 41

评论数 0

原创 (手撕代码)腾讯测开

一个数组存储了一堆逗号分隔的数字,需要他找出两两相加之和等于100的所有组合并打印,每个数字只能用一次。 例如:输入:[1,99,1,1,99,2,98,50,23,43] 输出:1 99 1 99 2 98 这道题我没有搜到答案,自己用了迭代的思想,复杂度很高,欢迎指点。 def word(l...

2019-08-31 18:21:05

阅读数 17

评论数 0

原创 (手撕代码)360python开发

最长公共连续子串 牛牛有两个字符串(可能包含空格),牛牛想找出其中最长的公共连续子串,希望你能帮助他,并输出其长度。 输入描述 输入为两行字符串(可能包含空格),长度均小于等于50. 输出描述 输出为一个整数,表示最长公共连续子串的长度。 示例1 输入 abcde abgde 输出 2 手撕的时候...

2019-08-31 18:17:02

阅读数 25

评论数 0

原创 flask_todolist项目脑图整理

2019-08-28 11:22:32

阅读数 28

评论数 0

原创 (剑指offer)面试题22:链表中倒数第k个节点

输入一个链表,输出该链表中倒数第k个结点。 这道题的思路很好 如果在只希望一次遍历的情况下, 寻找倒数第k个结点, 可以设置两个指针 第一个指针先往前走k-1步, 然后从第k步开始第二个指针指向头结点 然后两个指针一起遍历 当地一个指针指向尾节点的时候, 第二个指针正好指向倒数第k个结点 推广: ...

2019-08-18 16:30:41

阅读数 20

评论数 0

原创 (剑指offer)面试题18:删除链表的节点

给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点 # 如果不是尾结点:o(1),把下一个节点的内容复制到需要删除的节点上覆盖原有内容,再把下一个节点删除 # 如果删除的是尾结点,需要全部遍历:o(n)复杂度,利用前一节点删除 # 平均复杂度仍然为o(1) # 链表只有一个节...

2019-08-18 13:39:41

阅读数 23

评论数 0

原创 复杂度相关笔记

一、时间复杂度 (1)时间频度 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费...

2019-07-23 22:16:56

阅读数 15

评论数 0

原创 (剑指offer)面试题11:旋转数组的最小数字

把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 class Solu...

2019-07-20 15:45:50

阅读数 25

评论数 0

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