- 博客(11)
- 收藏
- 关注
原创 二叉树的遍历和重构,二叉搜索树(python)
文章目录二叉树遍历前序遍历中序遍历后序遍历层次遍历重构二叉搜索树特点构建及相关操作简单拓展:AVL二叉树遍历构建树节点class TreeNode(object): def __init__(self,data): self.data=data self.lchild=None self.rchild=None前序遍历root-左-右def pre_track(root): if root: print(root,end=",") pre_track(root.lchi
2020-08-13 13:07:55 408
原创 数据结构-数组二分查找和单链表
数据结构与算法,为内功心法,需要时间的沉淀和勤奋的练习,本文为了准备面试,捋一下非常基本的数据结构,比如链表只写了单链表。数组简单的一维数组在python里面的操作实际上就是操作list。可能的面试题:排序,另一篇我的博客里面全是针对数组的排序。重点掌握快排和归并排序。查找:二分查找的递归写法和非递归写法。递归写法def binary_search_1(nums,target,left,right): if left>right: return -1 mid=(left+ri
2020-08-12 17:36:12 252
原创 堆排序(python)
前两天面试被问到堆,于是学习了一下堆排序堆相关的二叉树基础堆实际上是一个完全二叉树,所以先了解一下二叉树。二叉树(binary tree)是指树中节点的度不大于2的有序树。划重点,度不大于2,有序。一些重要性质:在二叉树的第层 i 最多有 2^(i-1) 个结点。深度为k(k>=0)的二叉树最少有k个结点,最多有 2^k-1 个结点。对于任一棵非空二叉树,若其叶结点数为n0,度为2的非叶结点数为n2,则n0=n2+1。具有n个结点的完全二叉树的深度为比 log2(n+1) 大的第一个整
2020-08-12 12:52:07 372
原创 数据结构-栈及应用(python)
写一个栈栈,先进后出,想象一群人排队进了个死胡同,最先进去的人想出来得等后面的人都出来了才能出来。栈在python里面完全可以用列表实现class Stack(object): def __init__(self): self.lis=[] def is_empty(self): return len(self.lis)==0 def push(self,val): self.lis.append(val)
2020-07-28 13:32:46 219
原创 单链表合并/排序,爬N阶楼梯M种爬法(python)
单链表排序单链表的特点是不知道全长,只能从前往后遍历,如果用归并,就要找中点,怎么找呢,快慢指针,慢指针每次走一步,快指针每次走两步,当快指针走到头的时候刚好慢指针走了一半。class ListNode(object): def __init__(self,x): self.val=x self.next=Noneclass Solution(object): def sortList(self,head): if not head o
2020-07-27 15:17:20 270
原创 经典算法梳理-贪心算法(python)
文章目录基本找零问题leetcode 860:柠檬水找零leetcode 455: 分发饼干leetcode 575: 分糖果部分背包问题leetcode 435:无重叠区间leetcode 122: 买卖股票的最佳时机 II基本找零问题假设商店老板需要找零n元钱,钱币的面额有:100元、50元、20元、5元、1元,如何找零使得所需钱币的数量最少?思路:每一次尽可能用面值最大的钱币。def give_change(n,money): res=[] for ii: i
2020-05-17 22:06:31 743 2
原创 经典算法梳理-回溯(python)
文章目录回溯八皇后问题全排列(排列组合)括号生成整理回溯法经典问题。回溯回溯法又叫试探法,算法核心是深度优先搜索,就是假设第一步,再假设第二步一直死磕到头,看能不能走通,走不通咱就回去,重新走,可以退一步重新走,也可以一直退到第一步。直到找到可以走通的路线。如果小时候玩过迷宫游戏就能深刻体会到这个算法就是你心中所想的过程。八皇后问题八皇后问题是有一个8X8的棋盘,要把八个皇后放上去,条件是,每一个皇后的米子区域都不能有其他皇后,如下图,假如放进去了第一个皇后,灰色区域就不能再放任何皇后。我们现
2020-05-15 23:55:18 546
原创 经典算法梳理-查找/搜索算法
文章目录数组中的元素查找顺序查找顺序查找分块查找(基于顺序查找改进版本)二分法查找有序数组二分查找插值查找斐波那契查找哈希查找基本图形搜索算法广度优先搜索(BFS)深度优先搜索数组中的元素查找顺序查找顺序查找顺序查找思路比较简单,就是遍历,有就返回,所以数组有序无序无所谓,最优时间复杂度为O(1),最坏为O(n)。# 如果只找到第一个位置def sequentail_search_first(lis,target): for ii in range(len(lis)):
2020-05-14 17:26:00 995
原创 经典算法梳理-排序算法
文章目录排序算法冒泡排序选择排序插入排序希尔排序归并排序快速排序搜索算法递归回溯法贪心DP其他排序算法为了测试各个算法的复杂度,直接用以下程序生成10000个数字的列表进行排序:import randomlis = [random.randint(1,1000) for ii in range(10000)]首先测试内置排序算法sorted()函数的运行时间,sorted()函数使用的是归并排序,后面也会复现。import timestart=time.time()base_sort=so
2020-05-12 23:08:57 207
原创 网页微博抓取
需求有4万条已知的网页微博地址,想要抓取每一条网页上的评论数,点赞数和转发数目。问题怎么登录?目前可以抓取cookie的方法有很多博客写过了,微博只支持移动版的cookie获取。怎么抓取?有很多框架,beautifulsoup,pyquery等,但是这里不适用,选了最简单的正则表达式。代码第一部分:安装包import re, urllib.parse, urllib.reques...
2018-11-27 15:19:15 610
原创 Linux:遇到的tips
批量copy文件问题:有一个A文件夹中包含了我的n个文件,B文件(txt)中包含了我需要从n个文件中提取出来的m个文件的文件名,批量拷贝到C文件夹中,使用以下命令:cat B.txt | xargs -J % cp % ~/Downloads/C需要注意的是:B文件中包含的文件名最好是绝对路径,如果懒得加上绝对路径,就cd到A文件夹下进行操作。批量重命名文件问题:假设这...
2018-03-08 11:26:48 297
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人