
算法理论
文章平均质量分 70
算法理论
hyk今天写算法了吗
西南大学计科专业学硕,欢迎各位相互学习交流。
展开
-
LeetCode每日一题——1652. 拆炸弹
你有一个炸弹需要拆除,时间紧迫!你的情报员会给你一个长度为n的循环数组code以及一个密钥k。为了获得正确的密码,你需要替换掉每一个数字。所有数字会同时被替换。如果k > 0,将第i个数字用 接下来k个数字之和替换。如果k < 0,将第i个数字用 之前k个数字之和替换。如果k == 0,将第i个数字用0替换。由于code是循环的,code[n-1]下一个元素是code[0],且code[0]前一个元素是code[n-1]原创 2022-09-24 10:33:44 · 223 阅读 · 0 评论 -
LeetCode每日一题——698. 划分为k个相等的子集
给定一个整数数组 nums 和一个正整数 k,找出是否有可能把这个数组分成 k 个非空子集,其总和都相等。原创 2022-09-20 11:55:54 · 760 阅读 · 0 评论 -
字典树详解
字典树,顾名思义,是关于“字典”的一棵树。即:它是对于字典的一种存储方式(所以是一种数据结构而不是算法)。这个词典中的每个“单词”就是从根节点出发一直到某一个目标节点的路径,路径中每条边的字母连起来就是一个单词。标橙色的节点是“目标节点“,即根节点到这个目标节点的路径上的所有字母构成了一个单词。从这张图我们可以看出,字典树就是一棵树(emm…有些废话的嫌疑),只不过,这棵树的每条边上都有一个字母,然后这棵树的一些节点被指定成了标记节点(目标节点)而已。...原创 2022-07-12 18:22:06 · 304 阅读 · 0 评论 -
Python实现线段树
基于求区间和为例子的线段树原创 2022-06-21 17:12:39 · 389 阅读 · 0 评论 -
LeetCode每日一题——1051. 高度检查器
学校打算为全体学生拍一张年度纪念照。根据要求,学生需要按照 非递减 的高度顺序排成一行。排序后的高度情况用整数数组 expected 表示,其中 expected[i] 是预计排在这一行中第 i 位的学生的高度(下标从 0 开始)。给你一个整数数组 heights ,表示 当前学生站位 的高度情况。heights[i] 是这一行中第 i 位学生的高度(下标从 0 开始)。返回满足 heights[i] != expected[i] 的 下标数量 。示例1:示例 2:示例 3:提示:1 ...原创 2022-06-13 08:27:26 · 141 阅读 · 0 评论 -
算法理论——哈希表(附多例题)
哈希表的介绍与应用原创 2022-04-02 15:49:02 · 3982 阅读 · 0 评论 -
算法理论——桶排序、计数排序、基数排序
目录概论实现一、基数排序概念代码二、计数排序概念代码三、桶排序概念代码概论桶排序、计数排序、基数排序这三种排序算法都利用了桶的概念,但对桶的使用方法上有明显差异:基数排序:根据键值的每位数字来分配桶;计数排序:每个桶只存储单一键值;桶排序:每个桶存储一定范围的数值;实现一、基数排序概念基数排序是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。由于整数也可以表达字符串(比如名字或日期)和特定格式的浮点数,所以基数排序也不是只能使用于整数。动态演示图如原创 2022-01-15 22:13:18 · 639 阅读 · 2 评论 -
算法理论——拓扑排序(一定要会)
文章目录解释证明例题题目描述示例拓扑排序解法解释为了方便,我们令点数为n ,边数为m 。在图论中,一个有向无环图必然存在至少一个拓扑序与之对应,反之亦然。拓扑排序:简单来说,就是将图中的所有节点展开成一维序列,对于序列中任意的节点 ,如果在序列中 在 的前面,则说明在图中存在从 出发达到 的通路,即 排在 的前面。反之亦然。同时,我们需要知晓「入度」和「出度」的概念:入度:有多少条边直接指向该节点;出度:由该节点指出边的有多少条。因此,对于有向图的拓扑排序,我们可以使用如下思原创 2021-12-16 18:09:45 · 1458 阅读 · 0 评论 -
算法理论——快速幂思想(附例题)
文章目录例题引入题目要求示例快速幂解释及相应题解解释题解进阶题目题目要求示例题解例题引入题目要求实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn)。示例示例 1:输入:x = 2.00000, n = 10 输出:1024.00000示例 2:输入:x = 2.10000, n = 3 输出:9.26100示例 3:输入:x = 2.00000, n = -2 输出:0.25000 解释:2-2 = 1/22 = 1/4 = 0.25快速幂解释原创 2021-12-06 21:41:52 · 4711 阅读 · 0 评论 -
算法理论——位运算详解(&、|、^、~、>>、<<)
文章目录一、位运算概述二、位运算概览三、位运算符详解1、按位与运算符(&)2、按位或运算符(|)3、异或运算符(^)4、取反运算符 (~)5、左移运算符(<<)6、右移运算符(>>)7、复合赋值运算符一、位运算概述从现代计算机中所有的数据二进制的形式存储在设备中。即 0、1 两种状态,计算机对二进制数据进行的运算(+、-、*、/)都是叫位运算,即将符号位共同参与运算的运算。口说无凭,举一个简单的例子来看下 CPU 是如何进行计算的,比如这行代码:int a = 35;原创 2021-11-19 21:04:13 · 1828 阅读 · 0 评论 -
算法理论——动态规划(一看就会)
文章目录动态规划的介绍基本思想要点相关步骤相关例题讲解题目要求思路代码其他例题题目要求题解动态规划的介绍基本思想动态规划算法的基本思想是:将带求解的问题分解成若干个相互联系的子问题,先求解子问题,然后从这些子问题的解中得到原问题的解;对于重复出现的子问题,只在第一次遇到的时候对它进行求解,并把答案保存起来,避免重复求解。该思想与记忆化搜索类似,即将计算步骤中的过程保存下来,避免重复运算要点动态规划适用于这些子问题不是独立的情况,也就是各子问题包含公共子问题需要记录每个子问题求解的问题结果,以供其原创 2021-11-17 13:06:27 · 4081 阅读 · 0 评论 -
算法理论——回溯算法及剪枝优化
文章目录回溯算法的介绍1、什么是回溯法2、回溯法的效率3、回溯法解决的问题4、如何理解回溯法实例解析题目描述解析回溯法三部曲完整代码剪枝优化解析优化后代码总结回溯算法的介绍1、什么是回溯法回溯法也可以叫做回溯搜索法,它是一种搜索的方式。在二叉树系列中,我们已经不止一次,提到了回溯,例如二叉树:以为使用了递归,其实还隐藏着回溯 (opens new window)。回溯是递归的副产品,只要有递归就会有回溯。所以以下讲解中,回溯函数也就是递归函数,指的都是一个函数。2、回溯法的效率回溯法的性能如原创 2021-11-09 00:15:15 · 5517 阅读 · 2 评论 -
算法理论——BFS与DFS(广度优先与深度优先)
目录BFS概念实现补充——关于在 Python 中使用队列三种方法比较分析实例思路代码DFS概念实现补充——关于在Python中使用栈分析实例思路代码BFS概念BFS,即 广度优先搜索。有的小朋友就问了:“哥哥哥哥,我就是想画画,你能不能讲人话?”说人话就是,我们按照这个步骤来做——实现这里就要介绍一下 队列,因为 广度优先搜索 和 队列 是好基友。什么是队列?就是一个先进先出的数组,和我们日常生活中的排队很像。当我们向队列插入一个新数的时候,它插在最后,当我们取出一个数的时候,要从头取。就原创 2021-10-31 16:40:57 · 4780 阅读 · 1 评论 -
算法理论(3)
第四章:多维数组与矩阵相关题目:① 顺时针打印二维数组② 将元素为零的元素行列清零(不能逐个扫描处理,先扫描一遍记录,再扫描处理)③ Z字形打印二维数组(看成斜线打印,注意边界情况处理)④ 求出二位数组中边界为1的最大子方阵(注意下标越界情况)⑤ 第④题的优化解(创建一个三位数组 扫描四次即可)进制转换Ⅰ、首先是十进制转化为其他进制,如二进制,八进制,十六进制:它们在java中都有专门的函数可供调用: 十进制转化为二进制时调用toBinaryString(); 十进制转化原创 2021-02-28 11:16:28 · 113 阅读 · 0 评论 -
算法理论(2)
四、分治思想排序----概念:将原问题分割为数个简单易求的子问题,用递归解决这些子问题后,合并子问题的答案作为最终答案(分割与合并不能太过复杂)。1、快速排序原理与应用----方法概念:在待排序的数列中,我们首先要找一个数字作为基准数。为了方便,我们一般选择第 1 个数字作为基准数(其实选择第几个并没有关系)。接下来我们需要把这个待排序的数列中小于基准数的元素移动到待排序的数列的左边,把大于基准数的元素移动到待排序的数列的右边。这时,左右两个分区的元素就相对有序了;接...原创 2021-02-21 11:14:24 · 162 阅读 · 0 评论 -
算法理论(1)
一:位运算与进制----基本运算符号:& | ~ ^;----异或运算:1、异或是一个数学运算符。应用于逻辑运算。2、例如:真异或假的结果是真,假异或真的结果也是真,真异或真的结果是假,假异或假的结果是假。就是说两个值相 异结果为真。3、异或的运算方法是一个二进制运算: 1^1=0 0^0=0 1^0=1 0^1=1两者相等为0,不等为1.总之,就是这样,n^0=n n^n=0,即任何数与0进行异或,为它本身,两个相同的数进行异或运算,会得到0。----异或运算法则:原创 2021-01-30 15:55:48 · 196 阅读 · 1 评论