Учитывая большой список целых чисел (более 1 000 000 значений), найдите, сколько способов выбрать два из них, которые составляют до 0 .... Является ли вопросПоиск целочисленной суммы в массиве из 1 000 000
То, что я сделал, это создать положительный список случайного целого:
Random pos = new Random();
int POSNO = pos.Next(1, 1000000);
lstPOS.Items.Add(POSNO);
lblPLus.Text = lstPOS.Items.Count.ToString();
POSCount++;
И создал негативный список:
Random neg = new Random();
int NEGNO = neg.Next(100000, 1000000);
lstNEG.Items.Add("-" + NEGNO);
lblNegative.Text = lstNEG.Items.Count.ToString();
NegCount++;
Чтобы сделать сумму проверки я использую:
foreach (var item in lstPOS.Items)
{
int POSItem = Convert.ToInt32(item.ToString());
foreach (var negItem in lstNEG.Items)
{
int NEGItem = Convert.ToInt32(negItem.ToString());
int Total = POSItem - NEGItem;
if (Total == 0)
{
lstADD.Items.Add(POSItem + "-" + NEGItem + "=" + Total);
lblAddition.Text = lstADD.Items.Count.ToString();
}
}
}
Я знаю, что это не самый быстрый маршрут. Я рассмотрел использование массива. Есть ли у вас какие-либо предложения?
Какой тип 'lstPOS' и' lstNEG'? – MarcinJuraszek
Я не думаю, что вы хотите преобразовать целые числа в строки, когда вы кладете их в списки. Зачем это? –
lstPOS & lstNEG - простые списки. Я использовал их для визуального представления. Когда я добавляю их в список, они все равно целые. Если я извлечу из списка, сохранит ли он целочисленную форму или изменит элемент списка? –