数据结构初级
qq_25262819
这个作者很懒,什么都没留下…
展开
-
求数组中只出现一次的两个数
找出数组中只出现一次的两个数。原创 2015-10-05 22:35:25 · 364 阅读 · 0 评论 -
二维数组查找问题
题目:在一个二维数组中,每行都按照从左至右递增的顺序排序,每一列都按照从上到下递增顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有这个整数。 最容易想到就是逐个遍历矩阵,但是没有用到题干每一列和每一行都递增的信息。通过观察,从矩阵右上角或左下角开始遍历,这样能缩短每次遍历规模。例如,输入图中矩阵和整数7,则从右上角开始查找,9大于7,显然9所在的列不用查找,则9所在行原创 2015-10-06 14:53:57 · 355 阅读 · 0 评论 -
输出字符串中只出现一次的字符
#include#includeusing namespace std;void getonce (char *str){int hash[256] ={0};int k=0;char *order=(char *)malloc(strlen(str)+1);while(*str != '\0'){hash[int(*str)]++;if (hash[int(*str)] == 1)order[k原创 2015-10-06 14:37:09 · 701 阅读 · 0 评论 -
替换字符串中空格
实现一个函数,把字符串中的每个空格替换成”20%”如:输入”i love you baby”,输出:”i20%love%20you%20baby” 时间复杂度为o(n)解法,先遍历一遍数组计算出空格数量,由于替换一个空格需要多增加2个字节,所以替换后增加字节数应该为:n=2*sum(space);然后使用两个指针分别指向原来字符串的末尾和替换后新字符串的末尾。 移动p1,把字符逐个复制到p2原创 2015-10-06 21:46:00 · 276 阅读 · 0 评论 -
查找字符串中只出现一次的字符
只允许遍历一次字符串,统计只出现一次的字符串。由于只允许遍历一次,显然逐个比较检查的方法不行,可以通过hash方法统计字符串中字符出现次数,并额外用一个数组来存储字符串中第一次出现的字符,然后通过重新遍历第一次出现的字符数组,输出其对应hash值为1的字符则为原字符串中只出现一次的字符,时间复杂度为O(N)原创 2015-10-06 14:50:51 · 399 阅读 · 0 评论 -
快速排序算法实现
快速排序算法几种写法。 首先快排的思想是选取一个数来划分数组,这个数左边的数都小于等于它,右边的数都大于等于它。就这样递归的划分数组,最后达到快排的目的。 以下3种方法实现主要区别在于划分数组操作不一样,只要数组划分好了,后面操作都一样。 // 第一种方法,挖坑填坑方法。先选取数组第一个数作为参考数,然后分别设置两个指针i,j。i指向最左端,j指向最右端。首先把数组参考数所在位置挖掉作为当前原创 2015-10-08 22:39:26 · 292 阅读 · 0 评论 -
旋转数组的最小数字求解
旋转数组的最小数字解法是二分法一个很好的应用。通常二分法增对是一个排好序的数字查找操作,而一个递增数组的旋转数组把原数组分成了连个递增有序数组,要查找最小元素仍然可以利用二分法进行查找,查找的时间复杂度为logn。和二分法一样都是通过不断更新数组头尾指针来缩小查找范围。原创 2015-10-09 15:07:39 · 388 阅读 · 0 评论