< Summary

Information
Class: LeetCode.Algorithms.MaximizeExpressionOfThreeElements.MaximizeExpressionOfThreeElementsFrequencyArray
Assembly: LeetCode
File(s): D:\a\LeetCode-CS\LeetCode-CS\source\LeetCode\Algorithms\MaximizeExpressionOfThreeElements\MaximizeExpressionOfThreeElementsFrequencyArray.cs
Line coverage
97%
Covered lines: 38
Uncovered lines: 1
Coverable lines: 39
Total lines: 87
Line coverage: 97.4%
Branch coverage
91%
Covered branches: 11
Total branches: 12
Branch coverage: 91.6%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
MaximizeExpressionOfThree(...)91.66%121296.96%
GetValue(...)100%11100%
GetIndex(...)100%11100%

File(s)

D:\a\LeetCode-CS\LeetCode-CS\source\LeetCode\Algorithms\MaximizeExpressionOfThreeElements\MaximizeExpressionOfThreeElementsFrequencyArray.cs

#LineLine coverage
 1// --------------------------------------------------------------------------------
 2// Copyright (C) 2026 Eugene Eremeev (also known as Yevhenii Yeriemeieiv).
 3// All Rights Reserved.
 4// --------------------------------------------------------------------------------
 5// This software is the confidential and proprietary information of Eugene Eremeev
 6// (also known as Yevhenii Yeriemeieiv) ("Confidential Information"). You shall not
 7// disclose such Confidential Information and shall use it only in accordance with
 8// the terms of the license agreement you entered into with Eugene Eremeev (also
 9// known as Yevhenii Yeriemeieiv).
 10// --------------------------------------------------------------------------------
 11
 12namespace LeetCode.Algorithms.MaximizeExpressionOfThreeElements;
 13
 14/// <inheritdoc />
 15public sealed class MaximizeExpressionOfThreeElementsFrequencyArray : IMaximizeExpressionOfThreeElements
 16{
 17    private const int Offset = 100;
 18    private const int Size = 201;
 19
 20    /// <summary>
 21    ///     Time complexity - O(n)
 22    ///     Space complexity - O(1)
 23    /// </summary>
 24    /// <param name="nums"></param>
 25    /// <returns></returns>
 26    public int MaximizeExpressionOfThree(int[] nums)
 227    {
 228        Span<int> numsFrequencies = stackalloc int[Size];
 29
 2230        for (var i = 0; i < nums.Length; i++)
 931        {
 932            var num = nums[i];
 33
 934            var index = GetIndex(num);
 35
 936            numsFrequencies[index]++;
 937        }
 38
 239        var smallest = 0;
 40
 40241        for (var i = 0; i < numsFrequencies.Length; i++)
 20142        {
 20143            if (numsFrequencies[i] <= 0)
 19944            {
 19945                continue;
 46            }
 47
 248            smallest = GetValue(i);
 49
 250            break;
 51        }
 52
 253        var firstFound = false;
 254        var largest = 0;
 55
 38856        for (var i = numsFrequencies.Length - 1; i >= 0; i--)
 19457        {
 19658            while (numsFrequencies[i] > 0)
 459            {
 460                var value = GetValue(i);
 61
 462                if (firstFound)
 263                {
 264                    return largest + value - smallest;
 65                }
 66
 267                largest = value;
 68
 269                firstFound = true;
 70
 271                numsFrequencies[i]--;
 272            }
 19273        }
 74
 075        return 0;
 276    }
 77
 78    private static int GetValue(int index)
 679    {
 680        return index - Offset;
 681    }
 82
 83    private static int GetIndex(int value)
 984    {
 985        return value + Offset;
 986    }
 87}