数据结构学习
ayangyangyang25
这个作者很懒,什么都没留下…
展开
-
【数据结构】【字符串】【找相同子串】
https://www.bilibili.com/video/BV1Kb411W75N?p=477package com.aiguigu.exer;import org.junit.Test;public class StringDemo { /*用双指针,双重遍历 * 将短的字符串进行长度依次递减的子串与较长的串比较 类似最大公约数*/ public String getMaxSameString(String str1,String str2){原创 2020-11-16 15:17:07 · 518 阅读 · 0 评论 -
【数据结构】【贪心】【加油站】
https://www.nowcoder.com/practice/3b1abd8ba2e54452b6e18b31780b3635?tpId=46&tags=&title=&diffculty=0&judgeStatus=0&rp=1题目描述环形路上有n个加油站,第i个加油站的汽油量是gas[i].你有一辆车,车的油箱可以无限装汽油。从加油站i走到下一个加油站(i+1)花费的油量是cost[i],你从一个加油站出发,刚开始的时候油箱里面没有汽油。求从原创 2020-10-30 16:18:16 · 219 阅读 · 0 评论 -
【数据结构】【贪心】【电台集合覆盖问题】
遍历所有的广播电台, 找到一个覆盖了最多未覆盖的地区的电台(此电台可能包含一些已覆盖的地区,但没有关系) 将这个电台加入到一个集合中(比如ArrayList), 想办法把该电台覆盖的地区在下次比较时去掉。 重复第1步直到覆盖了全部的地区import java.util.ArrayList;import java.util.Arrays;import java.util.HashMap;import java.util.HashSet;public class GreedyAlgo.原创 2020-10-30 15:20:38 · 170 阅读 · 0 评论 -
【数据结构】【图及算法】深度优先搜索,拓扑排序,强连通分支,最短路径问题,最小生成树
from pythonds.graphs import Graph###BFS采用队列存储待访问顶点###DFS则是通过递归调用,隐式使用了栈class DFSGraph(Graph): def __init__(self): super().__init__() self.time = 0 def dfs(self): for aVertex in self: aVertex.setColor(...原创 2020-09-23 11:33:19 · 395 阅读 · 0 评论 -
【数据结构】【图及算法】词梯问题,广度优先搜索,骑士周游问题
class Vertex: def __init__(self,key): self.id = key self.connectedTo = {} def addNeighbor(self,nbr,weight=0): # 加边 nbr是顶点对象的key self.connectedTo[nbr] = weight def __str__(self): ...原创 2020-09-18 14:20:50 · 1013 阅读 · 1 评论 -
【数据结构】【树及算法】二叉查找树,平衡二叉查找树AVL树
二叉查找树原创 2020-09-16 21:15:10 · 133 阅读 · 0 评论 -
【数据结构】【树及算法】二叉树的实现,树的应用:表达式解析,树的遍历,优先队列和二叉堆
用list实现二叉树def BinaryTree(r): # 创建二叉树 return [r,[],[]]def insertLeft(root,newBranch): # 在原树上左子树插入新值 t = root.pop(1) if len(t) > 1: root.insert(1,[newBranch,t,[]]) # [newBranch,t 为左子树,[] 为右子树 ] else: ...原创 2020-09-14 22:39:05 · 235 阅读 · 0 评论 -
【数据结构】【排序与查找】散列,区块链,散列函数设计,映射
散列区块链散列函数设计、def hash(astring, tablesize): sum = 0 for pos in range(len(astring)): sum = sum + ord(astring[pos]) return sum%tablesize原创 2020-09-13 21:55:32 · 135 阅读 · 0 评论 -
【数据结构】【排序与查找】谢尔排序,归并排序,快速排序
谢尔排序def shellSort(alist): sublistcount = len(alist) // 2 # 间隔设定 while sublistcount > 0: for startposition in range(sublistcount): # 子列表排序 gapInsertionSort(alist,startposition,sublistcount) print(原创 2020-08-24 17:41:14 · 190 阅读 · 0 评论 -
【数据结构】【排序与查找】冒泡排序,选择排序,插入排序
冒泡排序def bubbleSort(alist): for passnum in range(len(alist)-1, 0, -1): for i in range(passnum): # n-1趟 if alist[i] > alist[i+1]: temp = alist[i] # 交换 alist[i] = alist[i+1]原创 2020-08-24 16:25:32 · 194 阅读 · 0 评论 -
【数据结构】【排序与查找】顺序查找,二分查找
def sequentialSearch(alist, item): """无序表查找 """ pos = 0 found = False while pos < len(alist) and not found: if alist[pos] == item: found = True else: pos = pos + 1 return foundtes...原创 2020-08-21 17:06:19 · 321 阅读 · 0 评论 -
【数据结构】【动态规划】博物馆大盗问题
# 宝物的重量和价值tr = [None, {'w':2, 'v':3},{'w':3, 'v':4}, {'w':4, 'v':8},{'w':5, 'v':8}, {'w':9, 'v':10}]# 大盗最大承重max_w = 20# 初始化二维表格m[(i,w)]# 表示前i个宝物中,最大重量w的组合,所得到的最大价值# 当i什么都不取,或w上限为0,价值均为0m = {(i, w):0 for i in range(le...原创 2020-08-21 16:26:25 · 401 阅读 · 0 评论 -
【数据结构】【递归】四.分治策略,优化贪心,找零兑换问题,动态优化
def recMC(coinValueList,change): minCoins = change if change in coinValueList: # 最小规模,直接返回 return 1 else: for i in [c for c in coinValueList if c <= change]: # 减小规模:每次减去一种硬币面值挑选最小数量 ...原创 2020-08-21 15:35:12 · 249 阅读 · 0 评论 -
【数据结构】【递归】三.汉诺塔,探索迷宫
def moveTower(height, fromPole, withPole, toPole): if height >= 1: moveTower(height-1, fromPole, toPole, withPole) # 将n-1个盘片从开始柱,经由目标柱,移动到中间柱 moveDisk(height, fromPole, toPole) # 将第n个(最大的)盘片,从开始柱移到目标柱 moveTower(hei...原创 2020-08-21 09:21:18 · 183 阅读 · 0 评论 -
【数据结构】【递归】二.可视化:分形树,谢尔宾斯基三角
import turtledef tree(branch_len): if branch_len > 5: # 树干太短不画,即递归结束条件 t.forward(branch_len) # 画树干 t.right(20) # 右倾斜20度 tree(branch_len - 15) # 递归调用,画右边的小树,树干减15 t.left(40) # 向左回40度,即左倾斜20度 ...原创 2020-08-20 16:48:19 · 218 阅读 · 0 评论 -
【数据结构】【递归】一.数组求和,任意进制转换
def listsum(numList): if len(numList) == 1: return numList[0] else: return numList[0] + listsum(numList[1:]) # 调用自身print(listsum([1,3,5,7,9]))更小规模! 调用自身!任意进制转换def toStr(n,base): convertString = '012...原创 2020-08-20 16:06:16 · 195 阅读 · 0 评论 -
【数据结构】【无序表和有序表实现】
无序表class Node: def __init__(self, nitdata): self.data = initdata self.next = None def getData(self): return self.data def getNext(self): return self.next def setData(self,newdata): self.原创 2020-08-20 15:37:48 · 605 阅读 · 0 评论 -
【数据结构】【队列】三.双端队列
class Deque: # list下标0作为deque尾端,下标-1作为首端 def __init__(self): self.items = [] def isEmpty(self): return self.items == [] def addFront(self, item): self.items.append(item) def addRear(self, item): s...原创 2020-08-20 14:02:20 · 113 阅读 · 0 评论 -
【数据结构】【队列】二.打印任务
import randomclass Printer: # 打印机类 def __init__(self, ppm): self.pagerate = ppm # 打印速度 self.currentTask = None # 当前打印任务 self.timeRemaining = 0 # 任务倒计时:当前任务还差几秒钟打印完 def tick(self): # 打印一秒 if s...原创 2020-08-20 11:42:12 · 1245 阅读 · 0 评论 -
【数据结构】【队列】一.热土豆
class Queue: def __init__(self): self.items = [] def isEmpty(self): return self.items == [] def enqueue(self, item): self.items.insert(0,item) def dequeue(self): return self.items.pop() def size(se...原创 2020-08-19 17:20:38 · 275 阅读 · 0 评论 -
【数据结构】【栈】 三.表达式转换
def infixToPostfix(infixexpr): prec = {} # 记录操作符的优先级 prec['*'] = 3 prec['/'] = 3 prec['+'] = 2 prec['-'] = 2 prec['('] = 1 opStack = Stack() postfixList = [] tokenList = infixexpr.split() # 解析表达式到单...原创 2020-08-19 15:16:47 · 279 阅读 · 0 评论 -
【数据结构】【栈】 二.进制转换
https://www.icourse163.org/learn/PKU-1206307812?tid=1206626211#/learn/content?type=detail&id=1212152653&cid=1215382857&replay=truedef divideBy2(decNumber): # 十进制转二进制 remstack = Stack() while decNumber > 0: # 十进制数还有数字剩下时,对2求原创 2020-08-19 11:26:36 · 330 阅读 · 0 评论 -
【数据结构】【栈】 一.括号匹配
https://www.icourse163.org/learn/PKU-1206307812?tid=1206626211#/learn/content?type=detail&id=1212155812&cid=1215384714&replay=trueclass Stack: def __init__(self): self.items = [] def isEmpty(self): return self.item原创 2020-08-19 11:08:18 · 177 阅读 · 0 评论