python算法
东都大白兔
草原上最美的花
展开
-
LeetCode 309 股票买卖含冷冻期 动态规划(多种情况)——python
309. 最佳买卖股票时机含冷冻期难度中等671给定一个整数数组,其中第i个元素代表了第i天的股票价格 。设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票):你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。我们用 f[i] 表示第 i 天结束之后的「累计最大收益」。根据题目描述,由于我们最多只能同时买入(持有)一支股票,并且卖出股票后有冷冻期的限...原创 2021-02-05 17:03:54 · 878 阅读 · 0 评论 -
二叉树最大深度/宽度——层序遍历 python
题目https://leetcode-cn.com/problems/maximum-width-of-binary-tree/https://leetcode-cn.com/problems/er-cha-shu-de-shen-du-lcof/深度——DFS# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x#原创 2021-02-03 13:35:55 · 1078 阅读 · 1 评论 -
LeetCode 剑指offer 13—— Python BFS,队列(queue)与列表,set()计数
剑指 Offer 13. 机器人的运动范围难度中等204收藏分享切换为英文接收动态反馈地上有一个m行n列的方格,从坐标[0,0]到坐标[m-1,n-1]。一个机器人从坐标[0, 0]的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格 [35, 37] ,因为3+5+3+7=18。但它不能进入方格 [35, 38],因为3+5+3+8=19。请问该机器人能够到达多少个格子?BFS...原创 2021-01-24 00:21:15 · 296 阅读 · 2 评论 -
LeetCode 剑指offer 12 距阵中的路径——Python DFS,函数传参问题
剑指 Offer 12. 矩阵中的路径难度中等230收藏分享切换为英文接收动态反馈请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左、右、上、下移动一格。如果一条路径经过了矩阵的某一格,那么该路径不能再次进入该格子。例如,在下面的3×4的矩阵中包含一条字符串“bfce”的路径(路径中的字母用加粗标出)。[["a","b","c","e"],["s","f","c","s"],["a","d","e","e"]]原创 2021-01-23 18:11:50 · 220 阅读 · 0 评论 -
LeetCode.938——Python二叉搜索树深度遍历(DFS)迭代及递归(栈)实现
二叉搜索树二叉排序树,每个节点的 left < node < right递归实现深度优先搜索版本一对于每个节点进行递归,并判断是否符合情况注意 node 有可能为 None,所以要判断 if node# Definition for a binary tree node.class TreeNode: def __init__(self, x): ...原创 2020-02-06 20:38:20 · 875 阅读 · 0 评论 -
CCF CSP 201809-2 小明买菜二——Python (count用法)构造n长的列表list
问题描述 小H和小W来到了一条街上,两人分开买菜,他们买菜的过程可以描述为,去店里买一些菜然后去旁边的一个广场把菜装上车,两人都要买n种菜,所以也都要装n次车。具体的,对于小H来说有n个不相交的时间段[a1,b1],[a2,b2]...[an,bn]在装车,对于小W来说有n个不相交的时间段[c1,d1],[c2,d2]...[cn,dn]在装车。其中,一个时间段[s, t]表示的是从时刻s到...原创 2019-12-03 21:10:40 · 256 阅读 · 0 评论 -
Python算法(CCF-CSP考试)——DFS深度优先遍历算法
深度优先遍历从某个节点v出发进行搜索,直到该节点的所有边都遍历完。当该节点所有边被遍历完后,回溯到v的前驱节点,继续搜索这个前驱节点的其他边。二叉树二叉树属于树结构,每个节点有两个分支,成为“左子树”“右子树”,每一层最多个节点。二叉树遍历顺序先(前)序遍历:DLR,中序遍历:LDR,后序遍历:LRDLDR分别为左子树、右子树、根上图 先序遍历:A-B-D-C-E...原创 2019-11-04 20:15:53 · 539 阅读 · 0 评论 -
Python算法(CCF-CSP考试)——哈希算法,两个数的和,单词模式匹配,bulls and cows,神奇的词根
哈希算法:比较常见的数据查找算法,如顺序查找(最简单,效率低),二分查找(效率高,要求数据有序),深度优先广度优先搜索(对于大数据量查找效率不高),哈希算法(查找快,查询插入删除等简单)存储预先设置一个长度M的数组,使用哈希函数F并以数据关键字为自变量,得到唯一返回值(0~M-1)。下图1哈希冲突链地址法,有N个哈希地址就有N个链表,数组Hash存放每个链表头指针下...原创 2019-10-30 00:12:51 · 761 阅读 · 0 评论 -
Python算法(CCF-CSP考试)——双向链表的元素添加删除
双向链表listvalue = [1, 5, 6, 2, 7, 3]listright = [3, 2, 4, 5, -1, 1]listleft = [-1, 5, 1, 0, 2, 3]第一个列表为链表元素,二三分别为模拟指针,即对应结点指向左右的元素的位置元素添加被添加的元素b,前一个元素a,后一个元素c第一步:给b左右的指针赋值,分别指向a,c。第二步:给a的...原创 2019-10-28 17:32:38 · 230 阅读 · 0 评论 -
Python算法——构建单链表,添加删除元素
构建:把链表元素和链表索引分别储存在两个list里。listvalue = [1, 5, 6, 2, 7, 3]listright = [3, 2, 4, 5, -1, 1]添加元素:元素添加时,要先让新元素指针指向后面的元素,再让他前面的元素指针指向新元素!!!!!!不然,先让前面的元素(a)指向新元素(b),再找新元素后面的元素(c)时,c的索引本来在a里,但是a已经改...原创 2019-10-28 01:55:36 · 995 阅读 · 0 评论 -
Python算法——二分查找
要求:从小到大排列的数组,找到值为a的元素概述:模拟指针,二分查找需要两个指针,一个指向数组第一个元素,一个指向最后一个元素的后方。查找范围为头尾指针之间的元素。(含头不含尾)找到查找范围的中间元素,进行判断左右。numbers = [1, 3, 5, 6, 7, 8, 13, 14, 15, 17, 18, 24, 30, 43, 56]head, tail = 0, l...原创 2019-10-28 00:02:18 · 96 阅读 · 0 评论 -
Python算法——合并有序数组
while...else...用法注意索引锁定位置import timestart = time.time()arr1 = [1, 3, 4, 6, 10]arr2 = [2, 5, 8, 11]ans = arr1.copy()ind = 0for i in range(len(arr2)): while ind < len(arr1): if arr2[i]...原创 2019-10-27 23:17:13 · 195 阅读 · 0 评论