
Python数据结构
范德彪陕西分彪
Chosen one
展开
-
924美团笔试
给一个字符串,求这个字符串的子集中中最长的回文串。返回这个回文串的长度。思路:求子集+全排列。原创 2022-09-24 18:18:28 · 238 阅读 · 0 评论 -
裁剪地毯java
【代码】裁剪地毯java。原创 2022-09-14 22:49:37 · 238 阅读 · 0 评论 -
答编程题如果需要自己写输入,如何写io
【代码】答编程题如果需要自己写输入,如何写io。原创 2022-08-26 00:41:34 · 115 阅读 · 0 评论 -
Leetcode15:三数之和
一些细节处理错误导致程序错误。原创 2022-08-14 21:24:01 · 177 阅读 · 0 评论 -
leetcode18子集问题
子集原创 2022-06-09 22:20:50 · 122 阅读 · 1 评论 -
二分搜索树的插入
二叉搜索树中的插入操作非递归class Solution { public TreeNode insertIntoBST(TreeNode root, int val) { if (root == null) { return new TreeNode(val); } TreeNode pos = root; while (pos != null) { if (val < pos原创 2022-04-27 20:05:29 · 199 阅读 · 0 评论 -
Java删除指定值结点[递归]图解
微观层面原创 2022-04-19 22:52:17 · 154 阅读 · 0 评论 -
两个链表的第一个公共节点
剑指offer中的一道题目。具体题目百度一下即可。自己写了一个双指针法。有漏洞。# class ListNode:# def __init__(self, x):# self.val = x# self.next = None## # @param pHead1 ListNode类 # @param pHead2 ListNode类 # @return ListNode类class Solution: def FindFirstComm原创 2021-10-18 20:55:14 · 70 阅读 · 0 评论 -
反转链表python
# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: # 返回ListNode def ReverseList(self, pHead): # write code here pre = None cur = pHead .原创 2021-10-16 22:57:11 · 93 阅读 · 0 评论 -
旋转数组的最小数字
https://leetcode-cn.com/problems/xuan-zhuan-shu-zu-de-zui-xiao-shu-zi-lcof/solution/xuan-zhuan-shu-zu-de-zui-xiao-shu-zi-by-leetcode-s/原创 2021-10-14 23:12:07 · 72 阅读 · 0 评论 -
树的遍历:递归
文章目录前序中序后序前序def preorder(tree): ''' :param tree: :return: des:根左右 ''' if tree == None: return print(tree.getRootVal()) preorder(tree.getLeftChild()) preorder(tree.getRightChild())中序def inorder(tree): if原创 2021-10-09 15:26:34 · 87 阅读 · 0 评论 -
利用表达式解析树求值
class BinaryTree: def __init__(self, rootObj): self.key = rootObj self.leftChild = None self.rightChild = None def insertLeft(self, newNode): if self.leftChild == None: self.leftChild = BinaryTree(newNod原创 2021-10-09 13:42:38 · 268 阅读 · 0 评论 -
python树的实现
文章目录嵌套列表实现链表实现嵌套列表实现def binary_tree(r): return[r, [], []]def insert_left(root, new_branch): t = root.pop(1) if len(t) > 1: root.insert(1, [new_branch, t, []]) else: root.insert(1, [new_branch, [], []]) return rootdef insert_right(root, ne原创 2021-10-08 10:51:41 · 425 阅读 · 0 评论 -
通过hashtable实现dic
# -*- encoding: utf-8 -*-"""@File : 123.py@Time : 2021-10-07 18:11@Author : XD@Email : gudianpai@qq.com@Software: PyCharm"""#实现ADT Map (字典)class HashTable: def __init__(self): self.size = 11 # 可以任意设置,但为了便于求解,应该设为素数 se原创 2021-10-07 18:32:22 · 81 阅读 · 0 评论 -
py八大排序
文章目录冒泡排序选择排序插入排序谢尔排序冒泡排序# -*- encoding: utf-8 -*-"""@File : demo.py@Time : 2021-09-22 21:29@Author : XD@Email : gudianpai@qq.com@Software: PyCharm"""def bubble_sort(l): for i in range(len(l) - 1): for j in range(len(l) - i -原创 2021-09-23 21:23:31 · 361 阅读 · 0 评论 -
零钱兑换②
https://zhuanlan.zhihu.com/p/145366243这个代码写的比较详细。。https://zhuanlan.zhihu.com/p/348134568原创 2021-08-08 00:49:58 · 98 阅读 · 0 评论 -
找零兑换:动态规划
关于动态规划的一些理解https://www.zhihu.com/question/39948290官方解释https://leetcode-cn.com/problems/coin-change-2/solution/ling-qian-dui-huan-ii-by-leetcode-soluti-f7uh/使用二维数组解决问题:多少种找零钱方法https://blog.youkuaiyun.com/zouyutu5296/article/details/88657963?ops_request_mis原创 2021-07-26 22:53:22 · 118 阅读 · 0 评论 -
找零兑换(递归解法)
https://blog.youkuaiyun.com/nyz5211314/article/details/105990555原创 2021-07-25 16:12:59 · 178 阅读 · 0 评论 -
使用递归探索迷宫
201.txtimport turtleimport randomdef get_maze_info(filename): with open(filename, 'r') as f: fl = f.readlines() maze_list = [] for line in fl: line = line.strip()#去掉 /n line_list = line.split(" ") maze_list.append(line_list) return maze.原创 2021-07-24 09:18:11 · 140 阅读 · 0 评论 -
递归应用:汉诺塔
# -*- encoding: utf-8 -*-"""@File : datastruck.py@Time : 2021-07-04 18:19@Author : XD@Email : gudianpai@qq.com@Software: PyCharm"""def movedisk(diskindex, fromtower, targettower): print("Move disk {} from {} to {}".format(diskindex, fr原创 2021-07-15 10:50:29 · 175 阅读 · 0 评论 -
递归:谢尔宾斯基三角形
# -*- encoding: utf-8 -*-"""@File : datastruct.py@Time : 2021-07-02 17:09@Author : XD@Email : gudianpai@qq.com@Software: PyCharm"""import turtlet = turtle.Turtle()def get_midpoint(a, b): ax, ay = a bx, by = b return ((ax +原创 2021-07-02 18:05:38 · 551 阅读 · 0 评论 -
海龟:递归作图
import turtlet = turtle.Turtle()t.pencolor('red')t.pensize(3)for i in range(5): t.forward(300) t.right(144)t.hideturtle()turtle.done()import turtlet = turtle.Turtle()t.pencolor('red')def drawSpiral(t, lineLen): if lineLen > 0:原创 2021-06-22 16:24:20 · 664 阅读 · 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]))25原创 2021-06-20 16:16:36 · 873 阅读 · 0 评论 -
有序链表的实现
class Node: def __init__(self, initdata): self.data = initdata self.next = None def getData(self): return self.data def getNext(self): return self.next def setData(self, newdata): self.data = newda原创 2021-06-19 20:15:21 · 178 阅读 · 0 评论 -
创建文件img并且在文件中创建xxxx.png文件,最后把.png文件改为.jpg文件
import osimport randomimport stringdef mkdir(): if not os.path.exists("img"): os.mkdir("img") print("creat img successfully!") else: print("img file exist!")def gen_code(): list = random.sample(string.ascii_letters +原创 2021-06-18 13:15:43 · 872 阅读 · 0 评论 -
无序链表Python实现
#node类实现#https://www.jianshu.com/p/7964c30197c0class Node(): def __init__(self, initdata): self.data = initdata self.next = None def getData(self): return self.data def getNext(self): return self.next de原创 2021-06-17 16:51:54 · 147 阅读 · 0 评论 -
Python利用双端队列判断回文词
#默认右端为队首class Deque: def __init__(self): self.items = [] def isEmpty(self): return self.items == [] def addFront(self, item): self.items.append(item) def addRear(self, item): self.items.insert(0, item) d原创 2021-06-16 15:39:12 · 232 阅读 · 0 评论 -
Python:模拟打印机
import randomfrom pythonds.basic.queue import Queueclass Printer: def __init__(self, ppm): self.pagerate = ppm self.currentTask = None self.timeRemaining = 0 def tick(self): if self.currentTask != None:原创 2021-06-15 15:13:34 · 1168 阅读 · 0 评论 -
Python使用队列解决约瑟夫环问题
from pythonds.basic.queue import Queuedef hotPota(nameList, num): simqueue = Queue() for name in nameList: simqueue.enqueue(name) print("Queue init:", simqueue.items) while simqueue.size() > 1: for i in range(num):原创 2021-06-15 11:18:06 · 1261 阅读 · 3 评论 -
Python进制转换(利用栈)
from pythonds.basic.stack import Stackdef dicideBy2(num): s = Stack() while num > 0:#此处是 > 0 还是 == 需要思考 rem = num % 2 s.push(rem) num = num // 2 binString = [] while not s.isEmpty(): binString.ap原创 2021-06-12 22:36:34 · 380 阅读 · 0 评论 -
Python中缀表达式转后缀表达式并计算
中缀转后缀from pythonds.basic.stack import Stackfrom string import *def infixToPostfix(infixexpr): # 这里创建一个字典是为了后面 优先级 的比较 prec = {} prec["*"] = 3 prec["/"] = 3 prec["+"] = 2 prec["-"] = 2 prec["("] = 1 # 实例化 opstack =原创 2021-06-13 23:43:04 · 486 阅读 · 2 评论 -
栈的应用:括号匹配
如果只有圆括号from pythonds.basic.stack import Stack#圆括号匹配()def parChecker(S): stack = Stack() for i in range(len(S)): if S[i] == '(': stack.push(S[i]) if S[i] == ')': stack.pop() if stack.isEmpty() == True:原创 2021-06-12 21:22:22 · 88 阅读 · 0 评论 -
H1作业(字符串和字节串)
原创 2021-06-10 21:10:24 · 107 阅读 · 0 评论 -
北大mooc课程平台
http://gis4g.pku.edu.cn/course/pythonds/原创 2021-06-10 20:51:36 · 312 阅读 · 0 评论 -
简单求和。
import timedef sum(n): start = time.time() sum = 0 for i in range(1, n + 1): sum += i end = time.time() return sum, end - startfor i in range(100): print("sum is:{}, requried {:.10f} seconds".format(sum(100000)[0],sum(1000原创 2021-06-10 12:51:30 · 215 阅读 · 0 评论 -
Python数据结构:插入排序
5是手里的牌,7是拿出来准备插入的牌…然后把四拿出来…把四放在一个变量存起来,然后5,7往右边挪…四放进来然后七往右边挪一下…依次进行…写代码怎么挪我要摸多少次牌?n-1次插入排序,复杂度O(n平方)初始时手里(有序区)只有一张牌每次(从无序区)摸一张牌,插入到手里已有牌的正确位置示例代码def insert_sort(li): for i in range(1,len(li)):#i表示摸到的牌的下标 tmp = li[i] j =.原创 2020-11-22 16:37:17 · 110 阅读 · 0 评论 -
Python数据结构:选择排序
选择排序先遍历一遍找到最小的,然后再遍历一遍找到第二个最小的…先写一个最简单版的def select_sort_simple(li): li_new = [] for i in range(len(li)): min_val = min(li) li_new.append(min_val) li.remove(min_val) return li_new测试一下li = [3,4,5,6,1,7,2,8,9]print(原创 2020-11-22 14:02:37 · 116 阅读 · 0 评论 -
Python数据结构:冒泡排序
首先简述一下排序排序:将一组无序的记录序列调整为有序的记录序列列表排序:将无序列表变为有序列表输入:列表输出:有序列表升序与降序内置的排序函数:sort()常见的排序算法lowB三人组冒泡排序,选择排序,插入排序niuB三人组快速排序,堆排序,归并排序others:希尔排序,计数排序,基数排序下图是一个冒泡排序的过程冒泡排序冒泡排序(buuule sout)列表中每两个相邻的数,如果前面的比后面的大,则交换这两个数一趟排序完成后,则无序区减少一个数,有序区增加一个数整原创 2020-11-21 19:09:02 · 190 阅读 · 0 评论 -
Python数据结构:顺序查找
顺序查找:从头走到尾时间复杂度O(n)代码示例def linear_search(l,val): for i, v in enumerate(list): # print(i) # print(v) if v == val: return i else: return -1测试l = [1,2,3,4,5,6,7]val = 3result = linear_search(l,val)p原创 2020-11-21 15:40:03 · 210 阅读 · 0 评论 -
Python数据结构:二分查找
时间复杂度:代码示例def binary_serch(l,val): left = 0 right = len(l)-1 while left <= right: mid = (left + right) // 2 if l[mid] == val: return mid elif l[mid] > val: right = mid -1 else:原创 2020-11-21 15:35:15 · 137 阅读 · 0 评论