随笔分类 - 有趣的算法
这些算法不是刷leetcode、牛客、打比赛等等总结的那么仔细。只是把python编程中我遇到的问题(执行速度太慢)思考后用更简单、省内存、省时间的算法思想来优化到很出人意料的高效。
摘要:问题 跳房子,规定总共有n个格子,每次可以选择跳1个格子、2个格子或3个格子,但是下一步不能和当前选择的跳跃距离一样,计算总共有多少种跳房子方案。 分析 这就是经典爬楼梯问题的进阶,仅仅换了个说法,但是比经典的爬楼梯问题难了不少,传统的爬楼梯问题一次可以上1或2个台阶没有连续动作选择的限制,核心解法
阅读全文
摘要:假设这些排序算法想得到一个升序序列,长度为n。 参考 https://blog.csdn.net/qq_53414724/article/details/125016223 https://zhuanlan.zhihu.com/p/602971700 https://visualgo.net/zh/
阅读全文
摘要:快速排序是一种不稳定的排序算法,时间复杂度O(nlogn),最差情况下时间复杂度为O(n^2)。 原理是: 选定待排序数组的任意元素为基准轴:pivot,通常选择数组第一个元素,保存下pivot数值。 遍历数组中的其他元素,通过交换元素位置,数组被划分为两个子序列:左子序列元素值全小于等于pivot
阅读全文
摘要:就是求: 参考自: 1: https://www.rookieslab.com/posts/fast-power-algorithm-exponentiation-by-squaring-cpp-python-implementation#brute-force-python-implementat
阅读全文
摘要:GCD算法原理: 扩展GCD算法原理: 代码呀: def gcd(a, b): while a != 0: a, b = b%a, a return b # calc : b^(-1) mod m def IntModInverse(b, m, show = True): if gcd(m,b) !
阅读全文
摘要:题目一 密钥矩阵的构造 新建5x5的表格,依次填入密钥单词,字母不重复,然后字母a-z一次不重复填入,注意字母i和字母j占据同一个位置,一般来说加密的时候明文中的j字母都可以替换成字母i。 密文两两分组 密文: KXJEY UREBE ZWEHE WRYTU HEYFS KREHE GOYFI WT
阅读全文
摘要:背景 最近在做算法作业,要用C去实现,虽然内心是崩溃食xiang的,但还是抑制住了退课的冲动……这里记录一下一个小情景的实现。 要用C语言定义一个swap函数实现一维数组的元素交换顺序。因为涉及到数组、指针、函数传参这三个概念,所以保存一下警示自己。 主函数代码 #include<stdio.h>
阅读全文
摘要:题目描述 请你来实现一个 atoi 函数,使其能将字符串转换成整数。 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下: 如果第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字字符组合起来,形成一个有符号整数。 假如第一个非空字符是
阅读全文
摘要:题目: 将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 "LEETCODEISHIRING" 行数为 3 时,排列如下: L C I R E T O E S I I G E D H N 之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"LC
阅读全文
摘要:题目: 提示: 0 ⇐ n ⇐ 8 BST: 二叉搜索树(Binary Search Tree,BST),又称为二叉排序树(Binary Sort Tree,BST),具有以下性质: 若左子树不为空,则左子树上所有节点的值均小于等于根节点值。 若右子树不为空,则右子树上所有节点的值均大于等于根节点值
阅读全文
摘要:参考自 https://zhuanlan.zhihu.com/p/65564614 https://www.jianshu.com/p/5a220e95cee2 YAO A C.Protocols for secure computation[C].In Proc. of the 23rd Annu
阅读全文
摘要:学习这个算法时候网上介绍不多,只能硬啃论文;本片文章是对Shor算法原理的一个简单描述,以及它用于解决什么样的问题,其实最关键的部分(关于QFT 量子傅里叶变换的内容)我并不理解,但这并不影响我们以数论的现有知识来学习理解这个算法。 背景 众所周知,RSA体制的安全性是建立在大数分解这一难题基础上的
阅读全文