《算法很美》
摩霄志在潜修羽
骐骥一跃,不能十步。驽马十驾,功在不舍。
展开
-
位运算的奇技淫巧
位运算的奇技淫巧1.求一个数nnn是奇数还是偶数?解法:让这个数和111相与。(奇数为111,偶数为000)2.nnn个数(从111到nnn)放入n+1n+1n+1的存储空间,只有一个元素重复,每个数据只能访问一遍,试找出重复元素为何?解法:根据异或“相同为0,不同为1”的特点。构造一个数据列1到n,将原始数据列和构造的数据列的所有元素异或取结果。由于重复的元素出现了三次,因此最终...原创 2019-04-02 20:31:58 · 249 阅读 · 0 评论 -
旋转数组的最小数值(改造二分法)
【题目描述】把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{34512}\{34512\}{34512}为{12345}\{12345\}{12345}的一个旋转,该数组的最小值为1。【思路】我的最初思路:做长度为222的滑动窗口,判断两个数字是否逆序。时间复杂度:O(N)O(N)O(N)更好的方法...原创 2019-04-02 21:39:46 · 155 阅读 · 0 评论 -
查找夹杂空串的顺序字符串
【题目】有个顺序排好的字符串数组,其中随机的插入一些空串,指定一字符串,求其对应的下标。【解析】既然是顺序排好要求查找,就可以使用分治法。字符串的比较使用strcmp()strcmp()strcmp()函数,此题主要考察的是对空串的处理:遇到空串,则将midmidmid下标向左或向右挪到非空串,再进行判断。另外,注意判断查找不到一个串的情况,也就是说它的索引超出了范围仍未找到。【代码】...原创 2019-04-03 19:34:11 · 107 阅读 · 0 评论 -
快速幂
【题目】求一个数aaa的nnn次幂是多少?(这个问题还是值得我小骄傲一下~毕竟没学过就很快想到了hh ~)【解法】常规思想:forforfor循环,复杂度O(N)O(N)O(N)快速幂:想象一个数161616,告诉你基数为222,如何迭代可以最快计算得到161616?222——>2×2=42\times2=42×2=4——>4×4=164\times4=164×4=16...原创 2019-04-03 20:22:53 · 94 阅读 · 0 评论