Пример #1
0
        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);
        }
Пример #2
0
        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;
            }
        }
Пример #3
0
        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);
        }