摘要: 题目要求:将字符串以词为单位进行翻转。如:"a bc def gh ij kml"变成"kml ij gh def bc a"。时间复杂度O(n),空间复杂度O(1)。思路:先将整个字符串按字母进行翻转,然后再逐个单词翻转。代码如下:#include<iostream>using namespace std;void wordturn(char *src, int len){ //按字母翻转 for(int i =0; i < len/2; i++){ char temp = src[i]; src[i] = src[len-i-1]; 阅读全文
posted @ 2013-04-03 22:26 Tiu.G 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 题目要求:在一个有序数组里面找一对数(两个数),使他们相加等于另外一个数。如,{1,2,4,7,11,16}要求找出和为15的两个数,如果有多组数满足要求,输出其中一组。思路:因为数组已经有序,我们用二分法来寻找这对数。这个题目是二分法的一种应用。代码如下:#include <iostream>using namespace std;int *find_two_digits(int *array, int len, int goal){ int *pi = new int[2]; for(int i = 0 ; i < len; i++){ int low = 0; int 阅读全文
posted @ 2013-04-03 20:34 Tiu.G 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 题目要求:把一个数组分成左边奇数右边偶数。要求效率尽量高。代码如下:#include <iostream>using namespace std;/*两数交换函数*/void swap(int &a,int &b){ int temp = a; a = b; b = temp;}/*划分函数*/void partition_odd_even(int a[], int count){ int low = 0;int high = count -1;while(low <= high){ while(a[low] % 2 == 1)low++; while(a[h 阅读全文
posted @ 2013-04-03 20:08 Tiu.G 阅读(492) 评论(0) 推荐(0) 编辑
摘要: 1.在一个有序数组里面找一对数(两个数),使他们相加等于另外一个数。如,{1,2,4,7,11,16}要求找出和为15的两个数,如果有多组数满足要求,输出其中一组。2.字符串单词翻转,如"a bc def gh ij kml"翻转后"kml ij gh def bc a"。要求时间复杂度O(n),空间复杂度O(1)。3.把一个数组划分成左边奇数右边偶数。将在algorithm分类中给出我的解法~ 阅读全文
posted @ 2013-04-03 19:29 Tiu.G 阅读(117) 评论(0) 推荐(0) 编辑