![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法(Python)
MrUncle德鲁
发现自己并喜欢自己
展开
-
LeetCode_Simple_1
以下代码均在python3中运行217、存在重复元素原题连接给定一个整数数组,判断是否存在重复元素。如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。示例 1:输入: [1,2,3,1],输出: true示例 2:输入: [1,2,3,4],输出: false示例 3:输入: [1,1,1,3,3,4,3,2,4,2],输出: tru...原创 2018-12-01 12:50:44 · 190 阅读 · 0 评论 -
树和树算法(1)
1、树的相关术语1.1、树的性质1、树是分层的;2、一个节点的子节点和另一个节点的子节点是完全独立的;3、它的每个叶节点都是不同的;4、树的所有下层部分(子树)可以被移动到树的另一个位置二不影响更下层的情况。1.2、术语表和定义【节点】:是树的基本构成部分,它包含一个数据元素和若干指向其子树的分支。节点的度:一个节点拥有子树的个数称为该节点的度。树的度:整个书中所有节点的度的最...原创 2019-04-02 20:29:20 · 223 阅读 · 0 评论 -
排序和搜索(2)
查找1、顺序查找列表无序输入一个列表和待搜索的数,返回一个布尔值,表示是否找到。复杂度为O(n)def sequentialSearch(alist, item): pos = 0 found = False while pos < len(alist) and not found: if alist[pos] == item: ...原创 2019-04-21 11:00:22 · 230 阅读 · 1 评论 -
树和树算法(2)
1、树的属性树是分层的树的一个节点的所有子节点独立于另一个节点的所有子节点。每个叶节点是唯一的。可以将树的整个部分(子树)移动到树中的不同位置,而不影响层次结构的较低级别。2、基本概念节点:树的基本组成部分,可以有一个名称,称为“键”。节点也可以有附加信息,称为“有效载荷”边:树的另一个基本组成部分。边连接两个节点以显示它们之间存在关系。根:树中唯一没有传入边的节点。路径:...原创 2019-04-26 09:55:49 · 232 阅读 · 0 评论 -
递归
递归递归的三定律要有基本情况,作为终止条件必须改变状态并向基本情况靠近以递归的方式调用自身1、将整数转换为任意进制的字符串def toStr(num, base): convertString = "0123456789ABCDEF" if num < base: return convertString[num] else: ...原创 2019-04-17 16:29:19 · 296 阅读 · 0 评论 -
查找(Python)
查找顺序查找二分查找哈希查找1、顺序查找1.1、无序def sequentialSearch(alist, target): pos = 0 found = False while pos < len(alist) and not found: if alist[pos] == target: found = T...原创 2019-06-05 19:11:54 · 203 阅读 · 0 评论 -
常见排序算法Python
排序冒泡排序O(n^2)选择排序O(n^2)插入排序O(n^2)希尔排序O(n)-O(n^2)归并排序O(nlogn)快速排序O(nlogn)-O(n^2)1、冒泡排序1.1、常规def bubbleSort(alist): for epoch in range(len(alist) - 1, 0, -1): for i in range(epoch)...原创 2019-06-05 19:12:52 · 129 阅读 · 0 评论 -
笔记-1
字符串乱序检查一个字符串是否为另一个字符串的乱序,是返回True,否则返回Falsedef anagramSolution1(s1,s2): alist = list(s2) pos1 = 0 stillOK = True while pos1 < len(s1) and stillOK: pos2 = 0 found ...原创 2019-06-04 17:17:42 · 134 阅读 · 0 评论 -
数据库常用操作
SQL基础语句SQL 是用于访问和处理数据库的标准的计算机语言。什么是 SQL?SQL 指结构化查询语言SQL 使我们有能力访问数据库SQL 是一种 ANSI 的标准计算机语言SQL DML 和 DDL可以把 SQL 分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL)。SQL (结构化查询语言)是用于执行查询的语法。但是 SQL 语言也包含用于更...原创 2019-08-24 15:44:02 · 191 阅读 · 0 评论 -
华为笔试(2)
0、笔试标准的输入输出格式:# coding = utf-8# 本题为考试单行多行输入输出规范示例import sysfor line in sys.stdin: a = line.split() print(int(a[0]) + int(a[1]))# coding = utf-8# 本题为考试多行输入输出规范示例import sysif __name__ =...原创 2019-04-02 20:28:27 · 390 阅读 · 0 评论 -
采蜜路径规划
华为笔试第一题:采蜜路径规划平原上一群蜜蜂开始采蜜,要连续采集5片花丛后才可以归巢。已知5片花丛相对于蜂巢的坐标,请你帮助蜜蜂规划一下要访问的花丛的顺序,以使飞行的总距离最短。输入描述:以蜂巢为平面原点的5片花丛A、B、C、D、E的坐标,值为整数。输出:从出发到返回蜂巢的最短路径长度,取整数,即舍弃小数点后的值。例如:输入:200,0,200,10,200,50,20...原创 2019-03-27 22:50:21 · 4454 阅读 · 0 评论 -
排序与搜索(Python实现)
【Jupyter notebook 模式传送门】首先总结一下:在无序表或者有序表上的顺序搜索,其时间复杂度为O(n);在有序表上进行二分查找,在最差情况下,复杂度为O(log n);散列表可以实现常数级时间的搜索;冒泡排序、选择排序和插入排序是O(n2)的算法;希尔排序在插入排序的基础上进行了改进,采用对递增子表排序的方法,其时间复杂度可以在O(n)和O(n^2)之间;归并排序的时...原创 2018-11-28 16:50:12 · 382 阅读 · 1 评论 -
Python基础1:数据类型
数据类型1、原生数据类型* int* float* boolean(True,False)常见的操作运算:加(+)、减(-)、乘(* )、除(/)、整除(//)、取余(%)、次方(**)2、集合数据类型list(列表):有序、元素类型不限、可变函数和属性:注意: myList = [1,2,3,4] A = [myList]*...原创 2019-03-05 22:47:04 · 222 阅读 · 0 评论 -
Python基础2:输入输出&异常处理&控制结构
一、输入输出1、输入input()函数2、输出print( [,sep=’ ‘, end=’\n’])二、控制结构while 条件for 条件if 条件 elseif 条件 elif 条件… else三、错误处理try-except:rasie:...原创 2019-03-05 22:49:33 · 292 阅读 · 0 评论 -
Python 类及其继承
深刻理解python面向对象的意义,创建类、并使用类继承。1、实现分数的相关运算class Fraction: def __init__(self, top, bottom): self.num = top # 分子 self.den = bottom # 分母 def show(self): print(self...原创 2019-03-06 22:11:19 · 365 阅读 · 0 评论 -
Stack栈
栈得基本实现使用栈解决一些常见的算法问题:括号匹配、进制转换1、栈stack先进后出主要函数有:Stack():创建一个新的空栈push(item):将item 压入栈中pop():将栈顶的元素弹出(删除)peek():返回栈顶元素,但是不删除isEmpty():返回一个布尔值,判断是否是空栈size():返回栈中元素的个数class Stack: de...原创 2019-03-16 11:19:34 · 173 阅读 · 0 评论 -
无序Lists列表
前面的数据结构,如栈、队列、双端队列,是使用python自带的列表list来实现的,但是并不是所有的编程语言都自带该数据结构,因此有时需要自己手动实现该对象List的主要方法:List():创建一个新的列表add():像列表中添加一个新的元素remove(item):删除列表中的元素,假定该元素位于列表中search(item):搜寻列表中是否含有该元素,返回一个布尔值isEmpt...原创 2019-03-20 15:52:55 · 478 阅读 · 0 评论 -
Queue队列
介绍队列的Python实现方式使用队列模拟打印机任务先进后出(FIFO)其中新添加的元素进入队列的【后端】,删除元素从【前端】开始主要的方法:Queue() 创建一个新的队列enqueue(item) 将item添加进入队列dequeue() 将前端第一个元素移除队列并返回。isEmpty() 测试队列是否为空size()返回队列的长度,即队列中元素的个数。...原创 2019-03-16 22:23:45 · 149 阅读 · 0 评论 -
有序List
有序列表是指列表中的元素是有顺序的,例如从小到大或者从大到小的顺序。OrderedList():创建一个新的有序表add(item):添加元素remove(item):删除item元素search(item):查看item是否在有序表中,返回一个布尔值isEmpty(): 返回一个布尔值,判断有序表是否为空size():返回有序表的长度,即元素的个数index(item):返回元素...原创 2019-03-20 19:19:56 · 1664 阅读 · 0 评论 -
Deque双端队列
1、介绍双端队列的python是实现方法2、利用双端队列实现回文数的检查1、python实现双端队列deque也被称作双端队列,是一个有序数据集合。可以从两端添加数据,也可以从两端删除数据。主要方法:Deque():创建一个新的双端队列addFront():从前端添加数据addRear():从后端添加数据removeFrount():从前端删除数据removeRear():...原创 2019-03-18 20:41:14 · 204 阅读 · 0 评论 -
浦发总结
bin(10)[2:]'1010'1、计算一个十进制数转换为二进制后1的个数def count_1(num): count = 0 while num > 0: count += 1 num &= (num - 1)# 该条语句的作用是把二进制形式中最右边的1抹除掉。例如x = 0b1100, x-1=0b1011, x&am...原创 2019-08-25 09:31:39 · 616 阅读 · 0 评论