算法
叶赫那拉坤
这个作者很懒,什么都没留下…
展开
-
算法:C++实现大数相乘
大数相乘,是指那些相乘结果或是乘数本身用long long类型都会溢出的数字,通常这些数字都通过string类型进行表示,借助于可动态调整大小的数据结构(vector,string,deque)模拟实现数字的乘法操作。原创 2017-08-02 08:53:32 · 10587 阅读 · 0 评论 -
算法:C++实现O(n)复杂度内查找第K大数
题目:是在一组数组(数组元素为整数,可正可负可为0)中查找乘积最大的三个数,最后输出最大乘积。 从国题目我们知道只有两种结果存在:1)三个最大的正整数相乘;2)一个最大的正整数和两个最小的负数相乘。所以我们需要找出数组中最大的三个数的乘积m,然后与数组中最小的两个数相乘再与最大的数相乘的结果n,然后比较m,n,选出最大的数即为最终的结果。 大神无处不在,参考代码牛客网大神分享。#include原创 2017-08-02 11:06:50 · 2324 阅读 · 0 评论 -
算法:C++实现电话号码分身
题目:首先将电话号码中的每个数字加上8取个位,然后使用对应的大写字母代替 (”ZERO”, “ONE”, “TWO”, “THREE”, “FOUR”, “FIVE”, “SIX”, “SEVEN”, “EIGHT”, “NINE”), 然后随机打乱这些字母,所生成的字符串即为电话号码对应的分身。思路:通过这些单词我们会发现有些字母只出现在特定的单词中,例如“Z”只出现在“ZERO”这个单词中,那么原创 2017-08-09 10:45:01 · 821 阅读 · 0 评论 -
算法:C++实现BCD进制转换
BCD转化原创 2017-08-10 16:15:35 · 1079 阅读 · 0 评论 -
算法:C++实现先递增后递减队列的最值和单调递增队列的绝对值最小的值
题目1:在一个先递增后递减的整型数组中,找出最大的数的下标;题目2:在一个单调递增的整型数组中,找出绝对值最小的数的下标;分析:乍看这两个题目似乎没有什么联系,但是仔细思考后我们可以转化为类似的一个问题,如果把题目2中的所有负数去绝度值,就变成了一个先递减后递增的整型数组中,找转载 2017-08-17 21:40:15 · 2579 阅读 · 0 评论 -
算法:C++实现动态规划中的几个典型问题
动态规划的思想在程序设计中占有相当的分量,动态规划的主要思想就是把大问题划分为小问题,通过求解小问题来逐渐解决大问题。 满足动态规划思想的问题具备两个典型特征: 最优子结构:就是说局部的最优解能够决定全局的最优解,最优解的子问题也是最优的。 子问题重叠 :就是说大问题划分为小问题时,并不是每次都是新问题,有的小问题可能已经在前面的计算中出现过。 下面介绍几个编程人员笔试常遇到的动态规划问原创 2017-07-31 18:49:27 · 4668 阅读 · 1 评论 -
算法:C++实现二分查找
事出有因,昨晚内推笔试题,采用遍历的方式提示耗时,由于系统原因(忍不住再次吐槽一下考试系统,估计是单线程队列模式),本地测试通过但是系统提交不上去,好不容易提交上去发现没通过全部的测试用例,当考虑用二分查找方式实现时时间已耗完。题目:新兵入队,编号从1开始依次递增(10个人的话编号是1-10),共分成N个队伍,指定每个队伍中的人数并分配新兵(按照编号顺序),然后随机选取Q个测试qi(i=1-Q),指原创 2017-08-20 09:25:03 · 603 阅读 · 0 评论 -
语法:STL中的有关二分查找的算法
STL加入C++11标准为C++注入了新的活力,其中提出的泛型编程为C++程序带来了翻天覆地的变化,一些泛化的算法实现让编程变得简单高效。STL 中有关二分查找的算法主要有三个:lower_bound、upper_bound、binary_search。参照《STL源码分析》对三个算法做个笔记。lower_bound指向一个前闭后开区间[first,last)中大于等于指定值value的最小元素坐翻译 2017-08-20 09:59:23 · 495 阅读 · 0 评论 -
算法:C++中的堆排序
堆中元素的排列方式分为两种:max-heap或min-heap,前者每个节点的key都大于等于孩子节点的key,后者每个节点的key都小于等于孩子节点的key。 由于堆可以看成一个完全二叉树,可以使用连续空间的array来模拟完全二叉树,简单原始的实现如下:#include<iostream>int heapsize=0;//全局变量记录堆的大小void heapSort(int array[原创 2017-08-13 16:08:06 · 490 阅读 · 0 评论