算法从简单开始
我们慢慢去熟悉机器的结构和思维,学习分享算法知识,与君共勉励!
谁家的书
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
算法从简单开始 - 两个大数相减
题目任意大小的两个十进制正整数(字符串表示)相减,输出结果解答这里因为是任意大小(当然计算机也是有限制的),所以并不能采用基本类型进行计算,当然我们也不考虑采用大数类(如 Java 的 BigInteger)我们依旧采用竖式计算,但是在处理的时候,应该注意几个处理点较大的数减去较小的数,方便竖式计算;符号通过是否较大数在前判定;当对应位的数值不足,应该从较大数前一位退位,补足,然后再相减(如 11 - 2 = 9,1 - 2 不足,10 退位补足,计算 11 - 2 = 9)#原创 2020-10-16 17:49:40 · 771 阅读 · 0 评论 -
算法从简单开始 - 两个大数相加
题目两个十进制正整数(字符串表示),均超过 64 位最大无符号整数值,请打印两个正整数的和。解答我们在小学加减法采用的是竖式加减法,这个题也是如此。输入 “112” + “88”,各位相加,满 10 进 1,依次计算个位数、十位数、百位数…我们来看下面的 C++ 代码,竖式加法注意 进位的处理#include <iostream>#include <string>using namespace std;int char2int(char c) { retu原创 2020-10-16 12:29:11 · 410 阅读 · 0 评论 -
算法从简单开始 - 正小数的进制转换
题目给定一个十进制的正小数转换为二进制的正小数(小数点保留 10 位)解答我们在做十进制正整数转换为二进制正整数时,采用短除法来计算,同样的正小数的进制间转换也是相同方法,参考文章1 参考文章2我们获取正小数的整数部分和小数部分,整数部分的转换同 transform_pos_int 处理,小数部分的转换同 transform_pos_decimal 处理// 十进制转二进制void transform_pos_int(int src) { int mod; int l原创 2020-10-16 10:39:45 · 397 阅读 · 0 评论 -
算法从简单开始 - 怎么判断回文串
怎么判断回文串什么是回文串?abcba 当字符串是对称结构时,就是回文串。根据回文串的特点,我们可以很快判断字符串是不是回文串,只需要从头尾各取字符逐个比对,一直比对结束为止,都相等则为回文串(回文串长度大于 2)int main(){ std::string str; while (std::cin >> str) { int first; int last; int len = str.length();原创 2020-10-08 22:11:50 · 1060 阅读 · 0 评论 -
算法从简单开始 - 找 2 的次幂的正整数
找 2 的次幂的正整数求余法int main(){ int n; while (std::cin >> n) { while (n % 2 == 0) { n = n / 2; } if (n == 1) { std::cout << n << " yes" << std::endl; } else { std::cout << n << " no" << std::endl;原创 2020-10-08 21:55:33 · 194 阅读 · 0 评论 -
算法从简单开始 - 用队列实现栈
几种基础的数学算法 - 用队列实现栈栈的特点:先进后出队列特点:先进先出实现栈的 empty(), push(), pop(), top() 的方法,实现语言 C++/JavaC++ 队列实现栈#include <iostream>#include <queue>using namespace std;class MyStack {public: void push(int x) { queue_.push(x); }原创 2020-09-11 10:01:30 · 162 阅读 · 0 评论 -
算法从简单开始 - 哈希算法/哈希表
几种基础的数学算法 (三) - 哈希算法/哈希表我们在生活中背诵古诗,通常会整段记忆,对于计算机来说这样通段的搜索实在是太累了。如果存在一串数字,然后通过某种算法可以将一首古诗变成这串数字,那么计算机要搜索这首古诗是否存在,只需要确认这串数字是否存在就行了。我们通常就是由哈希算法来得到这串数字的。但是实际使用中也不能排除两首古诗计算出同一串数字的可能,哈希冲突也就这么来了。现在我们来看看几个概念哈希表Hash Table, 也叫散列表,是根据键(Key)而直接访问在内存存储位置的数据结构。也原创 2020-09-01 09:41:06 · 770 阅读 · 0 评论 -
算法从简单开始 - 排序算法
几种基础的数学算法(二)- 排序说起排序算法,估计所有小伙伴参加面试都或多或少接触过。我们先来了解几个概念。时间复杂度:算法完成排序的总的操作次数;空间复杂度:算法在运行时所需存储空间大小;稳定的算法:如果 a 原本在 b 前面,而 a = b,算法排序之后 a 仍然在 b 的前面。不稳定的算法:如果 a 原本在b的前面,而 a = b,排序之后 a 可能会出现在 b 的后面。算法对比排序方法时间复杂度(平均)时间复杂度(最差)时间复杂度(最好)空间复杂度稳定性原创 2020-08-11 21:49:44 · 184 阅读 · 0 评论 -
算法从简单开始 - 最大公约数/最小公倍数
几种基础的数学算法 (一)我们在解决一些计算问题时,可能会遇到一些基础的数学问题,下面介绍几种这类问题,一起分享学习下。求两个整数 a, b 的最大公约数早在古希腊,一位数学大牛-欧几里得就通过简单易懂的方法求得了两数的最大公约数,为了看起来数学功底不错,这里表示成 (a,b),这种方法通常叫做辗转相除法。gcd(a, b) = gcd(b, a mod b)我们用一段 python 代码来表示:# gcd means "greatest common divisor"def gcd原创 2020-08-05 09:02:19 · 284 阅读 · 0 评论
分享