摘要: 和为S的两个数字输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得他们的和正好是s,如果有多对数字的和等于s,输出任意一对即可。先在数组中选择两个数字,如果他们的和等于输入的s,我们就找到了要找的两个数字,如果和小于s,我们希望两个数字的和再大一点。由于数组已经排好序了,我们可以选择较小的数字后面的数字。同样,当两个数字的和大于输入的数字的时候,我们可以选择较大数字前面的数字,因为排在数组前面的数字要小一些。#include bool FindNumberOfSum( int *data, int length, int sum, int &data1, int &d 阅读全文
posted @ 2013-07-04 16:18 Lee_Alvin 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 数组中只出现一次的数字一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字,要求时间复杂度是O(n),空间复杂度是O(1)。任何一个数字异或它自己都是0。如果我们从头到尾异或数组中的每一个数字,那么最终的结果刚好是那个只出现一次的数字,因为那些成对出现两次的数字全部在异或中抵消了。#include unsigned int FindFirstBitIs1( int num ){ int indexBit = 0; while ( ( ( num & 1 ) == 0 ) && ( indexBit > 1; indexBit+ 阅读全文
posted @ 2013-07-04 15:47 Lee_Alvin 阅读(492) 评论(0) 推荐(0) 编辑