![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法学习
Carey_Lu
IT技术、专注、阳光、天蝎座、90后、旅游、
展开
-
[算法学习]给定一个整型数组,找出两个整数为指定整数的和(1)
问题描述:给定一个整型数组,是否能找出其中的两个数使其和为某个指定的值?(假定是无序数组)解法一:暴力破解(穷举法,不提倡) /** * 暴力破解 * (穷举,时间复杂度:O(n^2),正常是不会用这个滴,假如只是为了快速解题,对时间没有限制,用这个最简单) * * @param nums * @param target */ ...转载 2018-03-08 22:39:55 · 628 阅读 · 0 评论 -
[算法学习]给定一个整型数组,找出两个整数为指定整数的和(2)
问题描述:给定一个整型的数组,找出其中的两个数使其和未指定的值,返回两个数的数组下标(假定是无序数组,数组元素各不相同,要求时间复杂度为O(n),n为数组长度,可以使用辅助空间)分析:时间复杂度是O(n),即是扫描一遍数组,不可嵌套扫描。必须全部数组扫描和查找全部,扫描+查找=O(n),可以使用数据结构哈希表,哈希表的查找的时间复杂度是O(1)。理一理代码思路(1). 因为输出是数组下标,那么就让...转载 2018-03-08 22:43:15 · 301 阅读 · 0 评论 -
[算法学习]给定一个整型数组,找出两个整数为指定整数的和(3)
问题描述: 设计一个类,包含如下两个成员函数: Save(int input) 插入一个整数到一个整数集合里。 Test(int target) 检查是否存在两个数和为输入值。如果存在着两个数,则返回true,否则返回false 允许整数集合中存在相同值的元素分析: 与[算法学习]给定一个整型数组,找出两个整数为指定整数的和(2)不同,这里需要算出的是存不存在这两个数,可以在上一篇的基础上修改一下...转载 2018-03-08 22:52:29 · 284 阅读 · 0 评论 -
用位运算实现四则运算之加减乘除
^: 按位异或;&:按位与; | :按位或计算机系统中,数值一律用补码来表示:因为补码可以使符号位和数值位统一处理,同时可以使减法按照加法来处理。对补码做简单介绍:数值编码分为原码,反码,补码,符号位均为0正1负。原码 -> 补码: 数值位取反加1补码 -> 原码: 对该补码的数值位继续 取反加1补码 的绝对值(称为真值):正数的真值就是本身,负数的真值是各位(包括符号位)取反...原创 2018-05-12 17:48:34 · 506 阅读 · 0 评论 -
[LintCode 119]Edit Distance
先给一个例子,两个字符串eeba和abca相似度是多少呢,edit distance是一个很好的度量,定义从字符串a变到字符串b,所需要的最少的操作步骤(插入,删除,更改)为两个字符串之间的编辑距离。对于eeba,abca它们之间的编辑距离为3,可以按照上面的操作步骤(不是唯一的)将eeba变到abca,1.将e变为a 2.删除e 3.添加c 共3个步骤。典型的动态规划问题。EDIT[i,j]表示...原创 2018-05-21 21:26:54 · 220 阅读 · 0 评论 -
统计数字 1,2,3 ... n 出现 0~9 的个数
统计数字问题 Time Limit: 1000ms, Special Time Limit:2500ms, Memory Limit:32768KB Problem 10242 : No special judgement Problem description 一本书的页码从自然数1 开始顺序编码直到自然数n。书的页码按照通常的习惯编排, 每个页码都不含多余的前导数字...原创 2018-07-22 19:26:18 · 937 阅读 · 2 评论 -
已知一个函数rand7()能够生成1-7的随机数,请给出一个函数rand10(),该函数能够生成1-10的随机数。
已知有个rand7()的函数,返回1到7随机自然数,让利用这个rand7()构造rand10() 随机1~10。 分析:要保证rand10()在整数1-10的均匀分布,可以构造一个1-10*n的均匀分布的随机整数区间(n为任何正整数)。假设x是这个1-10*n区间上的一个随机整数,那么x%10+1就是均匀分布在1-10区间上的整数。由于(rand7()-1)*7+rand7()可以构造出均匀分...原创 2019-04-18 21:56:17 · 879 阅读 · 0 评论 -
快速幂(取模)算法
对于普通类型的求a^n,我们的求法是不是a*a*a*a....,这样乘以n次,时间复杂度为O(n),对于普通n比较小的我们可以接受,然而当n比较大的时候,计算就慢了,所以我们就去寻找更快捷的计算方法! 例如:我们要求2^8,我们通过当为偶数的时候,a^n=(a*a)^(n/2),当n为奇数时,a^n=a*(a*a)^(n/2)的形式,是不是可以转化为4^4->8^2->64^1,就...转载 2019-04-28 17:07:51 · 231 阅读 · 0 评论