0

算法题轻松解析——汇总

[toc] 题目来自LeetCode、剑指offer、《程序员代码面试指南》左程云、笔面试题等 1. 链表 |编号|题目|难度|实现|分析| | | | | | | |LeetCode92|反转m n部分的链表|中等|Java| "分析" | |LeetCode83|删除链表中的重复元素|简单| " ...

ChengzhiYang 发布于 2020-03-05 20:59 评论(0)阅读(31)
0

字符串匹配算法 之BF、KMP

示例: 1. 已知字符串str1="acabaabaabcacaabc",求str2="abaabcac"是否在字符串str1中? 2. DNA病毒检测。已知患者DNA序列求病毒DNA序列是否在患者DNA中出现过?病毒DNA为环状结构(即首尾相连)。 此文以问题1为例进行解答。 一、BF算法: 即暴 ...

无名之士 发布于 2020-03-05 20:29 评论(0)阅读(58)
0

LeetCode python实现题解(持续更新)

[TOC] LeetCode Python实现算法简介 边刷边记边总结,欢迎讨论与指导,持续更新 "代码仓库" 0001 "两数之和" 1. 初始化一个字典 numtarget(哈希表、散列表),用来存储“若我需要 derta 凑成目标值,则应该寻找数组第 i 项”,即 numtarget[dert ...

炜柒 发布于 2020-03-04 23:01 评论(0)阅读(108)
0

已知线段上某点与起点的距离,求该点的坐标

由起点和终点确定的线段,已知某点与起点的距离,求该点的坐标。 ...

charlee44 发布于 2020-03-04 20:51 评论(0)阅读(67)
0

不相交集类及其应用生成迷宫

// 任意合并两个不相交集合 void unionSets( int root1, int root2 ) { s[ root2 ] = root1; } // 寻找 x 所在集合 int find( int x ) const { if( s[ x ] < 0 ) return x; else r ...

白小白2020 发布于 2020-03-04 16:32 评论(0)阅读(40)
0

「算法01」排序算法小结

排序算法是一类比较基础的算法,也是在学习编程与算法的过程中必须学习的一类问题。初学者经常在排序时摸不着头脑,面对一众的排序,不知从何处下手。下面笔者将以笔记的形式分享一下我在学习算法时整理的一些排序算法。 假设现有乱序数组:5, 2, 7, 4, 6, 1, 8, 我们将其排序为升序数组,各种方法过 ...

Michale17 发布于 2020-03-04 12:58 评论(0)阅读(150)
0

跟我一起学算法——二项堆

[toc] 1.二叉堆(Binary Heap)、二项堆、斐波那契堆(简称Fib堆)的比较: 相同: 1. 都是可归并堆(Mergeable Heap); 2. 它们都支持5个基本操作(创建、插入、查找最小值、抽取最小值、合并堆)和2个扩展操作 (结点减值、结点删除)。 不同: 1. 二叉堆是一种结 ...

ChengzhiYang 发布于 2020-03-03 15:27 评论(0)阅读(80)
0

跟我一起学算法——分治法

@[toc] 分治法(Divide and Conquer) 1.定义 对于具备以下特点的问题: 原问题可以分解为若干个与原问题性质相类似的子问题 问题的规模缩小到一定程度后可方便求出解 子问题的解可以合并得到原问题的解 分解出的各个子问题应相互独立 当这类问题较复杂或规模较大时,将它分解为若干子问 ...

ChengzhiYang 发布于 2020-03-03 15:23 评论(0)阅读(85)
0

跟我一起学算法——动态规划

[toc] 1. 步骤 描述问题的最优解(optimal solution)结构特征 递归定义最优解值 自底向上 计算最优解值 从已计算得到的最优解值信息中构造最优解 2. 要素 最优子结构和重叠子问题 最优子结构性质是指一个问题的最优解中所包含的所有子问题的解都是最优的。 动态规划避开了递归时,重 ...

ChengzhiYang 发布于 2020-03-03 15:21 评论(0)阅读(79)
0

跟我一起学算法——斐波那契堆

斐波那契堆(Fibonacci Heap) 1. 定义 FibHeap是一个树的集合,且树满足最小堆性质。根表不要求树根的度有序,head指向根表中值最小 的结点。全部使用双向循环链表。 KEY :防止超出O(lgn)的操作出现,也即防止出现度超过O(lgn)的树出现,只要能保证D(n)min 2. ...

ChengzhiYang 发布于 2020-03-03 15:20 评论(0)阅读(28)
0

启发式算法之遗传算法

刚开学便被拉去参加了研究生数模比赛,赛题是一个航班排班的优化问题,所以第一反映便是遗传算法,比赛期间三个问题都使用单目标遗传算法,趁着还比较熟悉,特此记录,以便后续复习。本篇文章使用Python进行实现。 启发式算法 启发式算法是一种技术,这种技术使得在可接受的计算成本内去搜寻最好的解,但不一定能保 ...

harrylyx 发布于 2020-03-02 18:41 评论(0)阅读(289)
0

二叉树的下一个结点

题目描述 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。 思路 时间复杂度O(n),空间复杂度O(1)。 代码 笔记 向上验证父结点无需递归,while循环即可。 ...

东寻 发布于 2020-03-02 15:01 评论(0)阅读(25)
0

删除链表中重复的结点

题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1 2 3 3 4 4 5 处理后为 1 2 5 思路 时间复杂度O(n),空间复杂度O(1)。 代码 笔记 在表头前添加一个辅助结点,有助于减少边界条件的特殊情况。 ...

东寻 发布于 2020-03-02 14:35 评论(0)阅读(25)
0

链表中环的入口结点

题目描述 给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。 思路 时间复杂度O(n),空间复杂度O(1)。 代码 笔记 除了相遇,其余情况都返回null。 ...

东寻 发布于 2020-03-02 14:29 评论(0)阅读(33)
0

《算法导论》图相关算法小结

《算法导论》图相关的内容贯穿很多章节,适用条件各异,而且都有证明过程。如果不打算熟记证明,仅仅是应用,遇到具体场景再去回忆适用于哪种算法不太方便。汇总一下便于查阅。 ...

五岳 发布于 2020-03-02 00:57 评论(2)阅读(213)
0

简单实用算法—数组乱序

Knuth-Durstenfeld Shuffle->每次从未处理的数据中随机取出一个数字,然后把该数字放在数组的尾部,即数组尾部存放的是已经处理过的数字。 ...

time-flies 发布于 2020-03-01 21:27 评论(0)阅读(91)
0

字符流中第一个不重复的字符

题目描述 请实现一个函数用来找出字符流中第一个只出现一次的字符。 例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。 当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。 如果当前字符流没有存在出现一次的字符,返回 字符。 思路 时间复杂度O( ...

东寻 发布于 2020-03-01 18:11 评论(0)阅读(48)
5

ACM模板_axiomofchoice

"语法" "c++" "java" "常规算法" "离散化" "01分数规划" "任务规划 | Livshits Kladov定理" "分治" "逆序数×二维偏序" "最大空矩阵 | 悬线法" "搜索" "舞蹈链×DLX" "启发式算法" "动态规划" "多重背包" "最长不降子序列×LIS" "数 ...

axiomofchoice 发布于 2020-03-01 17:39 评论(4)阅读(487)
0

Redis list实现原理 - 双向循环链表

双向链表 双向表示每个节点知道自己的直接前驱和直接后继,每个节点需要三个域 查找方向可以是从左往右也可以是从右往左,但是要实现从右往左还需要终端节点的地址,所以通常会设计成双向的循环链表; 双向的循环链表 循环链表指得是终端节点的next指向head节点,head的prior指向终端节点 若链表为空 ...

CoderJerry 发布于 2020-03-01 15:56 评论(0)阅读(327)
3

波束形成算法综述

作者:凌逆战 地址:https://www.cnblogs.com/LXP-Never/p/12051532.html 波束成型(Beamforming)又叫波束赋形、空域滤波 作用:对多路麦克风信号进行合并处理,抑制非目标方向 的干扰信号,增强目标方向的声音信号。 原理:调整相位阵列的基本单元参数 ...

凌逆战 发布于 2020-03-01 15:38 评论(0)阅读(1176)