1、暴力法(两重循环)
时间复杂度:O(n^2)
2、快速排序+滑动指针
先快速排序,得到升序的数组;
然后使用头指针和尾指针,如果两个指针指向的两个数之和大于100,则尾指针往前移1位,如果小于100,则头指针往后移1位。
3、哈希数组法(数组是乱序的)
int[] data;//乱序数组
bool[] sum = new bool[101];//全部初始化为false
for(int i=0; i<data.Count; ++i)
{
if(data[i] > 100) continue;
if(sum[100-data[i]]) return;//得到结果data[i]和100-data[i]
sum[data[i]] = true;
}
网友评论