数组有N+M个数字, 数字的范围为1 ... N, 打印重复的元素, 要求O(M + N), 不
可以用额外的空间。
代码:
private
int[] arr = {
8,
5,
7,
6,
4,
2,
6,
8,
9,
3,
1,
6,
4,
2,
1,
7};
private void button1_Click( object sender, EventArgs e)
{
foreach ( int t in arr)
{
if(arr[Math.Abs(t)]> 0)
{
arr[Math.Abs(t)] = -arr[Math.Abs(t)];
}
else
{
MessageBox.Show(Math.Abs(t).ToString());
}
}
}
private void button1_Click( object sender, EventArgs e)
{
foreach ( int t in arr)
{
if(arr[Math.Abs(t)]> 0)
{
arr[Math.Abs(t)] = -arr[Math.Abs(t)];
}
else
{
MessageBox.Show(Math.Abs(t).ToString());
}
}
}