code
文章平均质量分 58
代码
1024个秘密
好好工作,好好学习,好好生活。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
20190709 - 一致性哈希算法
Memcached Memcached是一个高性能的分布式缓存系统,但是它的服务端没有分布式,服务器之间不会相互通信,而是依赖客户端,由客户端选择服务器。 具体步骤: 1、向Memcached添加数据,首先客户端的算法根据key值找到key值对应的服务器; 2、服务器选定之后,保存缓存数据。 3、获取数据的时候,也是根据key,定位到具体的服务器,从而获取数据。 所以,这个算法就显得尤为重要。 哈...原创 2019-07-09 18:33:30 · 212 阅读 · 0 评论 -
20190711 - Java把大文件拆分成小文件(按行拆分,及平均拆分)
按行拆分 public class Test { private static String fileName = "G:/data.txt"; /** *@Description: 按行分割文件 *@Author: annecheng,2019/7/11 */ public static void splitField(int totalLine,...原创 2019-07-11 18:42:25 · 3752 阅读 · 0 评论 -
两个栈实现一个队列&&两个队列实现一个栈
1、两个栈实现一个队列,思路如下: 代码如下: #include #include #include using namespace std; template class CQueue { public: CQueue(void){} ~CQueue(void){} void appendTail(const T& node); T deleteHead(); pri原创 2017-08-16 20:35:50 · 233 阅读 · 0 评论 -
二叉树的前中后层次遍历(递归+非递归)、创建树(数组、前序+中序、中序加后序)
二叉树是数据结构中特别重要的知识点哦,先就其几个简单功能加以实现,都是基础哦~ 一、创建树 1、根据数组构造一棵树 造成排序二叉树 2、根据前序和中序构造一棵树 (根左右 和 左根右) 3、根据中序和后序构造一棵树(左根右 和 左右根) 二、遍历树 1、前序遍历(递归) 2、前序遍历(非递归) 3、中序遍历(递归) 4、中序遍历(非递归) 5、后序遍历(递归) 6、后原创 2017-08-16 14:41:20 · 510 阅读 · 0 评论 -
连续子数组的最大和
题目描述:输入一个整形数组,数组里面有正数也有负数,数组中一个或连续的多个整数构成一个子数组,求所有子数组的和的最大值,要求时间复杂度为O(n)。 思路分析: 代码分析:#include #include using namespace std; int FindMax(vector &vec) { int max = 0x80000000;//最小的负数 int tmp = 0原创 2017-09-08 10:37:01 · 339 阅读 · 0 评论 -
三七互娱笔试之【20人围圈,报数遇3排除】
题目描述:20个人围成一圈,轮流报数1,2,3,报到3的人踢出局,求最后剩余的一个人的序号为多少; 思路分析:典型的约瑟夫环问题; 代码分析: #include #include using namespace std; int main() { vector vec(20,0);//创建20个数据的容器,并全部置为0 int count = 0;//死亡顺序计数器 int原创 2017-09-06 21:24:31 · 2620 阅读 · 0 评论 -
两个链表的第一个公共结点,三种方法~
题目描述:输入两个链表,找出它们的第一个公共结点。这里的公共结点不是指数据域哦,而是指整个结点,所以可知,如果有第一个公共结点,则后面所有结点都一样,呈现的像是Y; 思路分析:三种方法 第一种方法:蛮力法:从链表1开始遍历,遇到一个结点,就遍历链表2的所有结点,找到相同的停止,不推荐,因为时间复杂度太大; 第二种方法:因为是Y形状,所以从后面找,一直找到不相同的结点的为止,因为没有前继指针,原创 2017-09-05 21:01:20 · 499 阅读 · 0 评论 -
数组中的逆序对
题目描述:在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对,输入一个数组,求这个数组中的逆序对数。 思路分析: 代码分析: #include using namespace std; //////////********第一种方法:简单粗暴,时间复杂度为O(n2)***********///////////// int GetRevNum_1(int原创 2017-09-05 16:25:10 · 285 阅读 · 0 评论 -
搜狐笔试之Kolakoski序列
题目描述:Kolakoski序列是自生成的无限序列,例如,当给定数组是[1,2]的时候,Kolakoski序列是这样的: [1,2,2,1,1,2,1,2,2,1,2,2,1,1,2,1,1,2,2,1,2,1,1,2,1,2,2,1,1...], 如果我们将相邻的相同数字分成一组,那么将会得到: [[1],[2,2],[1,1],[2],[1],[2,2],[1],[2,2],[1,1],原创 2017-08-28 22:06:13 · 568 阅读 · 0 评论 -
合并两个有序链表
题目描述:输入两个递增排序的链表,合并这两个链表,并使新链表中的结点仍然按照递增排序。 思路分析: 代码: #include #include using namespace std; //不带头结点的单向链表 struct Node { int data; Node *next; }; bool Insert_tail(Node **list,int value)//尾插原创 2017-08-25 12:54:19 · 325 阅读 · 0 评论 -
判断单链表是否成环形
题目描述:判断一个单向链表是否形成环形结构; 思路分析:定义一个快慢指针,快指针一次走两步,慢指针一次走一步,如果链表有环,则一定可以相遇。 代码实现: #include using namespace std; struct Node { int data; Node *next; }; bool Insert_tail(Node **list,int value)//尾插 {原创 2017-08-25 12:27:33 · 431 阅读 · 0 评论 -
链表中倒数第k个结点
题目描述:输入一个单链表,输出该链表中的倒数第k个结点。 思路分析:单链表不可能回退嘛,所以就考虑用两个指针。 代码分析: #include using namespace std; struct Node { int data; Node *next; }; bool Insert_tail(Node *list,int value)//尾插 { if(l原创 2017-08-25 11:42:37 · 307 阅读 · 0 评论 -
奇数在前偶数在后
题目描述:输入一个整数数组,调整数组的顺序,使得奇数在前,偶数在后 思路分析:可按照快排的思想进行分析,如下: 代码如下: #include using namespace std; void Sort(int *arr,int len)//奇数在前,偶数在后 { if(arr == NULL || len<=0) { return; } int low = 0;原创 2017-08-24 22:39:20 · 981 阅读 · 0 评论 -
在O(1)时间删除链表结点
题目描述:给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点; 思路分析: 代码分析: #include using namespace std; struct ListNode { int value; ListNode *next; }; bool Insert_head(ListNode *list,int value) //头插 { if(li原创 2017-08-24 19:59:25 · 312 阅读 · 0 评论 -
打印1到最大的n位数
题目描述:输入数字n,按顺序打印从到最大的n位十进制数。 题目分析:1、要考虑大数的情况;2、可以用两种方式解决这个问题,一种是字符串,从低位依次加1,遇9进位,另一种是递归,每位的情况都是0-9,从高位开始递归; 代码分析: #include using namespace std; //第一种方法:用字符串的方式,依次从低位加,每次加1,遇到9就进位。 void Show(char *原创 2017-08-24 18:42:42 · 273 阅读 · 0 评论 -
数值的整数次方
题目描述:实现函数double Power(double base,int exponment),求base的exponment次方,不得使用库函数,不需要考虑大数问题。 题目分析: 代码分析: #include using namespace std; bool equal(double base,double num)//double类型数字的比较 { if((base -原创 2017-08-24 14:12:29 · 309 阅读 · 0 评论 -
判断一个数字是不是2的整数次方
题目描述:用一条语句判断一个整数是不是2的整数次方。 题目分析:2的整数次方的特点就是二进制中有一个1,思路就是这个数与比它小一个数相与,如果为0,则证明为真,特例有:1和负数需要处理。 代码如下: #include using namespace std; //判断一个数是不是2的整数次数 bool IsTwo(int num) { if(num == 1) //处理1 { r原创 2017-08-24 12:46:07 · 699 阅读 · 0 评论 -
二进制中1的个数
题目描述:实现一个函数,输入一个整数,输出该数二进制中1的个数。 过程分析: 代码实现: #include using namespace std; int GetOneNum_1(int n) //第一种方法:标志位移动 { int count = 0; unsigned int flag = 1; while(flag) { if(n & flag) {原创 2017-08-24 12:07:56 · 224 阅读 · 0 评论 -
大数的乘法
题目:大数*大数,顾名思义,大数即为很大很大的数啦,一般来说呢,它是由char*的形式存储的,毕竟char的字节数只有1嘛,具体流程呢,如下所示: 代码呢,如下: #include #include using namespace std; #define SIZE 1024 void Reverse(char *str) //逆置字符串 { if(str == NULL )原创 2017-08-21 17:37:03 · 258 阅读 · 0 评论 -
斐波那契数列的实现
斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、…… 代码实现: #include using namespace std; //1、1、2、3、5、8、13、21、34、…… int原创 2017-08-04 20:30:54 · 348 阅读 · 0 评论 -
关于链表的插入、删除和逆置
链式存储:非连续内存存储,方便插入、删除。一般来说简单的链表,节点会有两个域,数据域和next域,next域一般指向下一个节点的位置。关于它的一些函数操作如下所示: #include #include using namespace std; //带头节点的单链表 struct Node { int data; Node *next; }; bool Insert_head(Node *原创 2017-08-04 20:11:34 · 357 阅读 · 0 评论 -
字符串的替换空格问题
题目:把字符串中的空格替换成%20,例如 “we are happy”替换成“we%20are%20happy”; 思路分析:如果从头遍历,遇到空格就替换,则后面整个串都要移动,这样下来,时间复杂度就会很大,那么,为何不考虑从后往前替换呢。#include #include //把空格替换成%20 //两种方法:1、创建一个新的数组 //2、在原有数组上进行更改 char* ReplaceBla原创 2017-08-04 16:18:11 · 344 阅读 · 0 评论 -
二维数组的查找问题
题目:一个二维数组,每一行都按照从左到右递增,每一列都按照从上到下递增,查找一个数是否存在于二维数组中 思路: 代码如下: #include //bool Find(int (*p)[5]){} //以前习惯于将二维数组的传递这样写,可是这样并不好,因为[]里无法给变量 //学会善于利用一维数组解决 rows:行 columns:列 number:要查找的数 bool Find(int原创 2017-08-04 16:08:21 · 289 阅读 · 0 评论 -
赋值运算符的重载函数
赋值运算符的重载函数:一定要注意避免发生浅拷贝(即多个指针指向同一块内存),赋值运算符一般是指给一个已经存在的对象赋上新的值,很容易发生浅拷贝现象,所以一定要注意哦。 代码如下: #include #include using namespace std; class CMyString { public: CMyString(char *pdata = NULL) {原创 2017-08-04 16:02:55 · 364 阅读 · 0 评论 -
2017笔试编程之砝码称重~
时间:2017/7/27 事件:参与了某公司的笔试,遇到一编程题,感觉挺有趣哒,选择记录下来,题目记不完全,但是努力回想~ 题目内容:有2个砝码,分别为1kg,2kg(各一个),则一共可以称重的情况有3种,即{1,1},{2,1},{3,1}【注:第一个元素为称重重量,第二个元素为组成方案】; 再举个例子,有3个砝码,分别为1kg,2kg,3kg(各一个),则一共可以称重的情况有6种,原创 2017-07-27 00:14:48 · 666 阅读 · 0 评论 -
求正整数的位数,依次输出,逆序打印
#include #include #include using namespace std; //1、求正整数的位数,2、分别输出每一位,3、逆序值打印 //对于正整数来说,一般是从低位开始得到,如果需要输出,则特点是先进后出,可以使用栈 void Count(int data,stack &s) { do { int tmp = data % 10; //依次得到低位数字 s原创 2017-07-11 19:30:34 · 603 阅读 · 0 评论 -
筛选法求素数 & 普通法求素数
//题目:求素数~#include #include #include #define SIZE 1000 //第一种方法:常用方法 bool Isprimer(int data) { double data1 = data; for(int i=2;i<=sqrt(data1);++i) { if(data % i == 0) { return true; } }原创 2017-07-11 17:11:26 · 356 阅读 · 0 评论 -
快速排序
代码: #include using namespace std; int Partion(int *arr,int low,int high)//划分过程 { if(arr == NULL || low>=high || low<0 || high<0) return -1; int tmp = arr[low]; while(low <原创 2017-06-01 18:13:30 · 243 阅读 · 0 评论 -
各种排序之间的比较和实现
hi,有强迫症麽?是不是每次看见乱七八糟的数字,都慌慌慌的~ 嘿嘿,介绍几个排序给你认识,从此让你过上整齐哒幸福生活~ 每个人都有优缺点,辣么,排序当然也有啦,先放个镇家之宝(自我感觉蛮漂亮的,O(∩_∩)O)~~~ 下来,轮到每个排序的自我介绍啦~ 一、插入排序法 开场白:我的特点呢,就是插插插,当然必须找合适的位置插入咯。 花样展示:啊呜~默认从小到大排序哦~~原创 2017-07-31 22:04:45 · 705 阅读 · 0 评论 -
有序数组的合并
#include using namespace std; #define SIZE 1024 /*1、如果可以申请辅助空间,那么从前从后倒是没什么所谓吧,这就像是归并的一次归并了。*/ void Merge_1(int *arr,int lenarr,int *brr,int lenbrr) { if(brr == NULL)//如果brr为空,则没有合并的必要 return; if(原创 2017-08-04 16:56:14 · 338 阅读 · 1 评论 -
二分查找法(递归+循环)
二分查找法,它的使用前提是数列是有序的,思想就是呢,先给中间的数做个标记,如果你要找的值比它小呢,你就往左找咯,反之亦然,然后再找中间数,一直重复啦~ #include using namespace std; //////////////////////递归//////////////////////// int Search(int *arr,int left,int right,int原创 2017-08-17 19:50:12 · 363 阅读 · 0 评论
分享