算法
王魚(Jones)
某不知名公司的某不知名算法工程师
展开
-
左神算法-初级8(python)
左神算法-初级8贪心策略:累加1、 金条和铜板2、 IPO3、 会议室项目宣讲递归和动态规划1、 汉诺塔问题2、待续贪心策略:累加1、 金条和铜板一块金条切成两半,是需要花费和长度数值一样的铜板的。比如长度为20的金条,不管切成长度多大的两半,都要花费20个铜板。一群人想整分整块金条,怎么分最省铜板?代价=金条长度分割金条,返回最小分割代价:[60, [10,20,30]]哈夫曼编码问题,结果为所有非叶节点的和;构建小根堆:每次拿出最小的两个数,计算和,重新放入堆,直到只剩一个数即为结果(贪心原创 2020-12-22 19:34:08 · 538 阅读 · 0 评论 -
左神算法-初级7(python)
左神算法-初级7并、查集前缀树字典序并、查集'''并、查集1. isSameset(A,B)2. union(A, B)3. 一次性输入全部数据,不支持动态数据流'''class UnionFind(): def __init__(self): self.fatherMap = {} # key:子, value:父 self.sizeMap = {} # key:当前元素,value:当前元素所属集合元素总数 def makeset(原创 2020-12-18 17:25:05 · 215 阅读 · 1 评论 -
左神算法-初级6(python)
左神算法-初级6哈希函数和哈希表哈希函数哈希函数性质:哈希函数特点:生成1000个相对独立的哈希函数:哈希表设计 RandomPool 结构布隆过滤器认识一致性哈希哈希函数和哈希表哈希函数哈希函数性质:① 输入域无穷大② 输出域有限③ 输入一样,输出一样④ 哈希碰撞⑤ 离散性(输入域经过哈希函数在输出域上均匀分布),输出域模一个数k,得到的结果还是均匀分布。哈希函数特点:输出和输入无关(打乱输入规律)生成1000个相对独立的哈希函数:假设哈希函数的输出域是h,那么输出域的前一半h1和原创 2020-12-18 14:27:58 · 408 阅读 · 1 评论 -
最短路径算法-Dijkstra(迪杰斯特拉)-python
如果不清楚原理的话,看下这个视频(简单易懂,只有4分钟)B站:dijkstra算法求最短路径看过之后就知道基本原理了。算法实现步骤:① 每次找出当前图中距离源点1最近的点k,② 计算源点1经过该点k到达某个点j是否比原来更近,如果更近,则把源点1到某个点j的距离,替换为这个更近的距离。③ 经过n-1次查找(把除了源点之外的点都遍历一遍,每个点都当一次中介值),即可得出源点到每个点最近的距离。如图:实现代码如下:(注释非常详细)# -*- coding: utf-8 -*-def ge原创 2021-03-07 14:32:33 · 4797 阅读 · 4 评论 -
约瑟夫环问题(简单解法和递归解法)(python)
约瑟夫环问题的简单解法和递归解法简单解法使用双向队列(deque) 函数使用列表加指针双层遍历递归解法相关题:剑指offer 46 - 孩子们的游戏简单解法思路:刚开始把所有的人放到一个列表里面去,报的数字不是k就把这个人放到列表的最后一个位置上面去,如果是k就把这个数字从列表中去掉,直到列表剩下1个人为止。使用双向队列(deque) 函数deque函数简介from collections import deque #deque是一种双向队列,底层据说也是同样用双链表实现的deque.r原创 2020-12-11 14:44:48 · 2567 阅读 · 1 评论 -
左神算法-初级5(python)
左神算法-初级4二叉树0、构建二叉树1、实现二叉树的先序、 中序、 后序遍历2、中序遍历后继/前继节点3、二叉树的序列化和反序列化(前序、层序)4、平衡二叉树,左右子树高度差不超1(不一定是满树)、满二叉树(一定是平衡树)未完待续未完待续二叉树0、构建二叉树class BinaryTree(object): def __init__(self, data): self.data = data self.child_l = None self.ch原创 2020-12-10 20:21:28 · 344 阅读 · 1 评论 -
左神算法-初级4(python)
这里写目录标题矩阵1、转圈打印矩阵2、旋转正方形矩阵3、“之” 字形打印矩阵链表1、判断一个单链表是否是回文结构2、链表与荷兰国旗问题3、复制含有随机指针节点的链表4、两个单链表相交问题矩阵1、转圈打印矩阵2、旋转正方形矩阵3、“之” 字形打印矩阵链表1、判断一个单链表是否是回文结构2、链表与荷兰国旗问题3、复制含有随机指针节点的链表4、两个单链表相交问题1、转圈打印矩阵【要求】 额外空间复杂度为O(1)转圈打印的过程就是不断顺时针打印外围元素的过程,只要给你一个左上角的点(如(0原创 2020-12-08 16:31:44 · 375 阅读 · 2 评论 -
过河问题(贪心算法)(python)
过河问题(贪心算法) - CapitalAccumulation - 博客园 思路非常清晰过河问题一、问题描述二、问题答案三、扩展四、问题推广五、对于本题的最优选择:coding一、问题描述在漆黑的夜里,甲乙丙丁共四位旅行者来到了一座狭窄而且没有护栏的桥边。如果不借助手电筒的话,大家是无论如何也不敢过桥的。不幸的是,四个人一共只带了一只手电筒,而桥窄得只够让两个人同时过。如果各自单独过桥的话,四人所需要的时间分别是1、2、5、8分钟;而如果两人同时过桥,所需要的时间就是走得比较慢的那个人单独行动时所原创 2020-12-11 11:54:41 · 6795 阅读 · 0 评论