< Summary

Information
Class: LeetCode.Algorithms.MinimumPairRemovalToSortArray1.MinimumPairRemovalToSortArray1Simulation
Assembly: LeetCode
File(s): D:\a\LeetCode-CS\LeetCode-CS\source\LeetCode\Algorithms\MinimumPairRemovalToSortArray1\MinimumPairRemovalToSortArray1Simulation.cs
Line coverage
100%
Covered lines: 35
Uncovered lines: 0
Coverable lines: 35
Total lines: 75
Line coverage: 100%
Branch coverage
100%
Covered branches: 10
Total branches: 10
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
MinimumPairRemoval(...)100%22100%
IsSorted(...)100%44100%
GetMinSumIndex(...)100%44100%

File(s)

D:\a\LeetCode-CS\LeetCode-CS\source\LeetCode\Algorithms\MinimumPairRemovalToSortArray1\MinimumPairRemovalToSortArray1Simulation.cs

#LineLine coverage
 1// --------------------------------------------------------------------------------
 2// Copyright (C) 2025 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.MinimumPairRemovalToSortArray1;
 13
 14/// <inheritdoc />
 15public class MinimumPairRemovalToSortArray1Simulation : IMinimumPairRemovalToSortArray1
 16{
 17    /// <summary>
 18    ///     Time complexity - O(n^2)
 19    ///     Space complexity - O(n)
 20    /// </summary>
 21    /// <param name="nums"></param>
 22    /// <returns></returns>
 23    public int MinimumPairRemoval(int[] nums)
 324    {
 325        var list = new List<int>(nums);
 326        var operations = 0;
 27
 1428        while (!IsSorted(list))
 1129        {
 1130            var minIndex = GetMinSumIndex(list);
 31
 1132            list[minIndex] += list[minIndex + 1];
 33
 1134            list.RemoveAt(minIndex + 1);
 35
 1136            operations++;
 1137        }
 38
 339        return operations;
 340    }
 41
 42    private static bool IsSorted(List<int> list)
 1443    {
 4644        for (var i = 0; i < list.Count - 1; i++)
 2045        {
 2046            if (list[i] > list[i + 1])
 1147            {
 1148                return false;
 49            }
 950        }
 51
 352        return true;
 1453    }
 54
 55    private static int GetMinSumIndex(List<int> list)
 1156    {
 1157        var minSum = int.MaxValue;
 1158        var minSumIndex = 0;
 59
 14060        for (var i = 0; i < list.Count - 1; i++)
 5961        {
 5962            var sum = list[i] + list[i + 1];
 63
 5964            if (sum >= minSum)
 3265            {
 3266                continue;
 67            }
 68
 2769            minSum = sum;
 2770            minSumIndex = i;
 2771        }
 72
 1173        return minSumIndex;
 1174    }
 75}