< Summary

Information
Class: LeetCode.Algorithms.DeleteColumnsToMakeSorted2.DeleteColumnsToMakeSorted2Greedy
Assembly: LeetCode
File(s): D:\a\LeetCode-CS\LeetCode-CS\source\LeetCode\Algorithms\DeleteColumnsToMakeSorted2\DeleteColumnsToMakeSorted2Greedy.cs
Line coverage
100%
Covered lines: 32
Uncovered lines: 0
Coverable lines: 32
Total lines: 71
Line coverage: 100%
Branch coverage
100%
Covered branches: 16
Total branches: 16
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
MinDeletionSize(...)100%1616100%

File(s)

D:\a\LeetCode-CS\LeetCode-CS\source\LeetCode\Algorithms\DeleteColumnsToMakeSorted2\DeleteColumnsToMakeSorted2Greedy.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.DeleteColumnsToMakeSorted2;
 13
 14/// <inheritdoc />
 15public sealed class DeleteColumnsToMakeSorted2Greedy : IDeleteColumnsToMakeSorted2
 16{
 17    /// <summary>
 18    ///     Time complexity - O(n * m)
 19    ///     Space complexity - O(n)
 20    /// </summary>
 21    /// <param name="strs"></param>
 22    /// <returns></returns>
 23    public int MinDeletionSize(string[] strs)
 424    {
 425        var result = 0;
 26
 427        var n = strs.Length;
 428        var m = strs[0].Length;
 29
 430        Span<bool> skipped = stackalloc bool[n - 1];
 31
 2832        for (var i = 0; i < m; i++)
 1033        {
 1034            var needDelete = false;
 35
 4036            for (var j = 0; j < n - 1; j++)
 1537            {
 1538                if (skipped[j] || strs[j][i] <= strs[j + 1][i])
 1039                {
 1040                    continue;
 41                }
 42
 543                needDelete = true;
 44
 545                break;
 46            }
 47
 1048            if (needDelete)
 549            {
 550                result++;
 51
 552                continue;
 53            }
 54
 3055            for (var j = 0; j < n - 1; j++)
 1056            {
 1057                if (skipped[j])
 358                {
 359                    continue;
 60                }
 61
 762                if (strs[j][i] < strs[j + 1][i])
 663                {
 664                    skipped[j] = true;
 665                }
 766            }
 567        }
 68
 469        return result;
 470    }
 71}