public ValidEntries PartTwo(List <int> expenseReport) { var validExpenseEntries = new HashSet <int>(); bool foundTriplet = false; // O(n) Triplet in List With Target Sum foreach (var n in expenseReport) { var currentSum = _year - n; foreach (var j in expenseReport) { if (!foundTriplet && validExpenseEntries.Contains(currentSum - j)) { var sum = n + j + (currentSum - j); var product = n * j * (currentSum - j); _toReturn = new ValidEntries { ValidEntryOne = n, ValidEntryTwo = j, ValidEntryThree = currentSum - j, ValidEntryProduct = n * j * (currentSum - j) }; foundTriplet = true; break; } else { validExpenseEntries.Add(j); } } } return(_toReturn); }
protected async Task ShowResults() { if (ValidateTextbox()) { invalid = false; DayOne _challengeSolver = new DayOne(sumNumber); _partOne = new ValidEntries(); _partTwo = new ValidEntries(); await RefreshReport(); if (_expenseReport.Count > 0) { _partOne = _challengeSolver.PartOne(_expenseReport); _partTwo = _challengeSolver.PartTwo(_expenseReport); } if (_partOne != null && _partTwo != null) { childOne.Show(); childTwo.Show(); } else { invalid = true; } } else { invalid = true; } }
public ValidEntries PartOne(List <int> expenseReport) { var validExpenseEntries = new HashSet <int>(); // O(n) Duplet in List with Target Sum expenseReport.ForEach(n => { if (validExpenseEntries.Contains(_year - n)) { _toReturn = new ValidEntries { ValidEntryOne = n, ValidEntryTwo = _year - n, ValidEntryThree = -99, ValidEntryProduct = n * (_year - n) }; } else { validExpenseEntries.Add(n); } }); return(_toReturn); }