├── LeetCodeNet.Tests
├── Usings.cs
├── Easy
│ ├── Design
│ │ ├── DesignParkingSystem_1603_test.cs
│ │ ├── RangeSumQuery_Immutable_303_test.cs
│ │ ├── ImplementQueueusingStacks_232_test.cs
│ │ ├── ImplementStackusingQueues_225_test.cs
│ │ ├── MinStack_155_test.cs
│ │ ├── DesignHashMap_706_test.cs
│ │ └── DesignHashSet_705_test.cs
│ ├── Array
│ │ ├── ReshapeTheMatrix_566_test.cs
│ │ ├── RemoveElement_27_test.cs
│ │ ├── FindNumberswithEvenNumberofDigits_1295_test.cs
│ │ ├── RowWithMaximumOnes_2643_test.cs
│ │ ├── MajorityElement_169_test.cs
│ │ ├── ValidMountainArray_941_test.cs
│ │ ├── Semi-OrderedPermutation_2717_test.cs
│ │ ├── FindtheHighestAltitude_1732_test.cs
│ │ ├── DuplicateZeros_1089_test.cs
│ │ ├── SearchInsertPosition_35_test.cs
│ │ ├── TwoSum_1_test.cs
│ │ ├── PlusOne_66_test.cs
│ │ ├── SpecialArrayWithXElementsGreaterThanorEqualX_1608_test.cs
│ │ ├── BinarySearch_704_test.cs
│ │ ├── MaxConsecutiveOnes_485_test.cs
│ │ ├── RunningSumof1dArray_1480_test.cs
│ │ ├── HeightChecker_1051_test.cs
│ │ ├── ThirdMaximumNumber_414_test.cs
│ │ ├── MoveZeroes_283_test.cs
│ │ ├── FindAllNumbersDisappearedinanArray_448_test.cs
│ │ ├── TransposeMatrix_867_test.cs
│ │ ├── RemoveDuplicatesFromSortedArray_26_test.cs
│ │ ├── CheckIfNandItsDoubleExist_1346_test.cs
│ │ ├── SquaresofaSortedArray_977_test.cs
│ │ ├── MatrixDiagonalSum_1572_test.cs
│ │ ├── FindLuckyIntegerinanArray_1394_test.cs
│ │ └── DeterminetheWinnerofaBowlingGame_2660_test.cs
│ ├── BitManipulation
│ │ ├── ReverseBits_190_test.cs
│ │ ├── SignleNumber_136_test.cs
│ │ ├── HammingDistance_461_test.cs
│ │ ├── PowerofTwo_231_test.cs
│ │ ├── ConvertBinaryNumberinaLinkedListtoInteger_1290_test.cs
│ │ └── Numberof1Bits_191_test.cs
│ ├── LeetMath
│ │ ├── CountOddNumbersinanIntervalRange_1523_test.cs
│ │ ├── ValidPerfectSquare_367_test.cs
│ │ ├── HappyNumber_202_test.cs
│ │ ├── SignoftheProductofanArray_1822_test.cs
│ │ ├── CheckIfItIsaStraightLine_1232_test.cs
│ │ ├── RomanToInteger_13_test.cs
│ │ ├── PalindromeNumber_9_test.cs
│ │ ├── SubtracttheProductandSumofDigitsofanInteger_1281_test.cs
│ │ ├── SqrtX_69_test.cs
│ │ ├── LargestPerimeterTriangle_976_test.cs
│ │ ├── CanMakeArithmeticProgressionFromSequence_1502_Test.cs
│ │ └── FizzBuzz_412_test.cs
│ ├── DP
│ │ ├── PascalsTriangle_118_test.cs
│ │ └── BestTimetoBuyandSellStock_121_test.cs
│ ├── Strings
│ │ ├── ReverseString_344_test.cs
│ │ ├── DecryptStringfromAlphabettoIntegerMapping_1309_test.cs
│ │ ├── LexicographicallySmallestPalindrome_2697_test.cs
│ │ ├── FirstUniqueCharacterinaString_387_test.cs
│ │ ├── IsSubsequence_392_test.cs
│ │ ├── MinimumStringLengthAfterRemovingSubstrings_2696_test.cs
│ │ ├── ValidAnagram_242_test.cs
│ │ ├── ReverseVowelsofaString_345_test.cs
│ │ ├── LongestPalindrome_409_test.cs
│ │ ├── ToLowerCase_709_test.cs
│ │ ├── ReverseWordsinaStringIII_557_test.cs
│ │ ├── LongestCommonPrefix_14_test.cs
│ │ ├── MinimizeStringLength_2716_test.cs
│ │ ├── RansomNote_383_test.cs
│ │ ├── CountBinarySubstrings_696_test.cs
│ │ ├── MergeStringsAlternately_1768_test.cs
│ │ ├── MinimumTimetoTypeWordUsingSpecialTypewriter_1974_test.cs
│ │ ├── ValidParentheses_20_test.cs
│ │ ├── IsomorphicStrings_205_test.cs
│ │ ├── ValidPalindrome_125_test.cs
│ │ └── ReplaceAllDigitswithCharacters_1844_test.cs
│ ├── Trees
│ │ ├── ConvertSortedArraytoBinarySearchTree_108_test.cs
│ │ ├── AverageofLevelsinBinaryTree_637_test.cs
│ │ ├── MergeTwoBinaryTrees_617_test.cs
│ │ └── MaximumDepthofBinaryTree_104_test.cs
│ └── LinkedList
│ │ ├── MiddleoftheLinkedList_876_test.cs
│ │ └── ReverseLinkedList_206_test.cs
├── Medium
│ ├── Graph
│ │ ├── CloneGraph_133_test.cs
│ │ ├── ReorderRoutestoMakeAllPathsLeadtotheCityZero_1466_test.cs
│ │ └── NumberofOperationstoMakeNetworkConnected_1319_test.cs
│ ├── Design
│ │ ├── FrequencyTracker_2671_test.cs
│ │ └── DesignBrowserHistory_1472_test.cs
│ ├── Strings
│ │ ├── CountAndSay_38_test.cs
│ │ ├── LongestPalindromicSubstring_5_test.cs
│ │ ├── LetterCasePermutation_784_test.cs
│ │ ├── DecodeString_394_test.cs
│ │ ├── FindAllAnagramsinaString_438_test.cs
│ │ ├── LongestRepeatingCharacterReplacement_424_test.cs
│ │ ├── PermutationinString_567_test.cs
│ │ ├── RemovingStarsFromaString_2390_test.cs
│ │ └── ShiftingLetters_848_test.cs
│ ├── Array
│ │ ├── FindMinimuminRotatedSortedArray_153_test.cs
│ │ ├── RottingOranges_994_test.cs
│ │ ├── SpiralMatrix_54_test.cs
│ │ ├── FindtheValueofthePartition_2740_test.cs
│ │ ├── PeakIndexinaMountainArray_852_test.cs
│ │ ├── SumofMatrixAfterQueries_2718_test.cs
│ │ ├── NumberofIslands_200_test.cs
│ │ ├── NumberofEnclaves_1020_test.cs
│ │ ├── FirstCompletelyPaintedRoworColumn_2661_test.cs
│ │ ├── MaximumSubarray_53_test.cs
│ │ ├── TopKFrequentElements_347_test.cs
│ │ ├── TwoSumII_167_test.cs
│ │ ├── Searcha2DMatrix_74_test.cs
│ │ ├── MaxConsecutiveOnes III_1004_test.cs
│ │ └── MinimizeMaximumofArray_2439_test.cs
│ ├── DP
│ │ └── FindthePunishmentNumberofanInteger_2698_test.cs
│ ├── Trees
│ │ ├── ValidateBinarySearchTree_98_test.cs
│ │ ├── BinaryTreeLevelOrderTraversal_102_test.cs
│ │ └── SumRootToLeafNumbers_129_test.cs
│ ├── LinkedList
│ │ └── LinkedListCycleII_142_test.cs
│ └── LeetMath
│ │ └── ReverseInteger_7_test.cs
└── LeetCodeNet.Tests.csproj
├── LeetCodeNet
├── LeetCodeNet.csproj
├── DataStructs
│ ├── Node.cs
│ ├── NaryTreeNode.cs
│ └── ListNode.cs
├── AssemblyInfo.cs
├── Easy
│ ├── BitManipulation
│ │ ├── ReverseBits_190.cs
│ │ └── SingleNumber_136.cs
│ ├── LinkedList
│ │ ├── DeleteNodeinaLinkedList_237.cs
│ │ ├── ReverseLinkedList_206.cs
│ │ └── MiddleoftheLinkedList_876.cs
│ ├── LeetMath
│ │ ├── PalindromeNumber_9.cs
│ │ ├── CountOddNumbersinanIntervalRange_1523.cs
│ │ ├── SubtracttheProductandSumofDigitsofanInteger_1281.cs
│ │ ├── SqrtX_69.cs
│ │ ├── LargestPerimeterTriangle_976.cs
│ │ └── SignoftheProductofanArray_1822.cs
│ ├── Array
│ │ ├── RunningSumof1dArray_1480.cs
│ │ ├── FindtheHighestAltitude_1732.cs
│ │ ├── ReplaceElementswithGreatestElementonRightSide_1299.cs
│ │ ├── TwoSum_1.cs
│ │ ├── SortArrayByParity_905.cs
│ │ ├── ValidMountainArray_941.cs
│ │ ├── KthMissingPositiveNumber_1539.cs
│ │ └── CheckIfNandItsDoubleExist_1346.cs
│ ├── Strings
│ │ ├── ReverseString_344.cs
│ │ ├── MinimumTimetoTypeWordUsingSpecialTypewriter_1974.cs
│ │ └── IsSubsequence_392.cs
│ └── DP
│ │ ├── PascalsTriangle_118.cs
│ │ └── BestTimetoBuyandSellStock_121.cs
└── Medium
│ └── Array
│ └── MinimizeMaximumofArray_2439.cs
├── .github
└── workflows
│ └── dotnet-desktop.yml
└── LeetCodeNet.sln
/LeetCodeNet.Tests/Usings.cs:
--------------------------------------------------------------------------------
1 | global using Xunit;
--------------------------------------------------------------------------------
/LeetCodeNet.Tests/Easy/Design/DesignParkingSystem_1603_test.cs:
--------------------------------------------------------------------------------
1 | using LeetCodeNet.Easy.Design;
2 |
3 | namespace LeetCodeNet.Tests.Easy.Design
4 | {
5 | public sealed class DesignParkingSystem_1603
6 | {
7 | [Fact]
8 | public void Check()
9 | {
10 | var solver = new ParkingSystem(1, 1, 0);
11 |
12 | Assert.True(solver.AddCar(1));
13 | Assert.True(solver.AddCar(2));
14 | Assert.False(solver.AddCar(3));
15 | Assert.False(solver.AddCar(1));
16 | }
17 | }
18 | }
--------------------------------------------------------------------------------
/LeetCodeNet.Tests/Easy/Design/RangeSumQuery_Immutable_303_test.cs:
--------------------------------------------------------------------------------
1 | using LeetCodeNet.Easy.Design;
2 |
3 | namespace LeetCodeNet.Tests.Easy.Design
4 | {
5 | public sealed class RangeSumQuery_Immutable_303_test
6 | {
7 | [Fact]
8 | public void Check()
9 | {
10 | var solver = new NumArray(new[] { -2, 0, 3, -5, 2, -1 });
11 |
12 | Assert.Equal(solver.SumRange(0, 2), 1);
13 | Assert.Equal(solver.SumRange(2, 5), -1);
14 | Assert.Equal(solver.SumRange(0, 5), -3);
15 | }
16 | }
17 | }
--------------------------------------------------------------------------------
/LeetCodeNet.Tests/Easy/Design/ImplementQueueusingStacks_232_test.cs:
--------------------------------------------------------------------------------
1 | using LeetCodeNet.Easy.Design;
2 |
3 | namespace LeetCodeNet.Tests.Easy.Design
4 | {
5 | public sealed class ImplementQueueusingStacks_232_test
6 | {
7 | [Fact]
8 | public void Check()
9 | {
10 | var solver = new MyStack();
11 |
12 | solver.Push(1);
13 | solver.Push(2);
14 | Assert.Equal(solver.Top(), 2);
15 | Assert.Equal(solver.Pop(), 2);
16 | Assert.False(solver.Empty());
17 | }
18 | }
19 | }
--------------------------------------------------------------------------------
/LeetCodeNet.Tests/Easy/Design/ImplementStackusingQueues_225_test.cs:
--------------------------------------------------------------------------------
1 | using LeetCodeNet.Easy.Design;
2 |
3 | namespace LeetCodeNet.Tests.Easy.Design
4 | {
5 | public sealed class ImplementStackusingQueues_225_test
6 | {
7 | [Fact]
8 | public void Check()
9 | {
10 | var solver = new MyQueue();
11 |
12 | solver.Push(1);
13 | solver.Push(2);
14 | Assert.Equal(solver.Peek(), 1);
15 | Assert.Equal(solver.Pop(), 1);
16 | Assert.False(solver.Empty());
17 | }
18 | }
19 | }
--------------------------------------------------------------------------------
/LeetCodeNet/LeetCodeNet.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | net6.0
5 | enable
6 | enable
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/LeetCodeNet.Tests/Easy/Design/MinStack_155_test.cs:
--------------------------------------------------------------------------------
1 | using LeetCodeNet.Easy.Design;
2 |
3 | namespace LeetCodeNet.Tests.Easy.Design
4 | {
5 | public sealed class MinStack_155_test
6 | {
7 | [Fact]
8 | public void Check()
9 | {
10 | var solver = new MinStack();
11 |
12 | solver.Push(-2);
13 | solver.Push(0);
14 | solver.Push(-3);
15 |
16 | Assert.Equal(solver.GetMin(), -3);
17 | solver.Pop();
18 | Assert.Equal(solver.Top(), 0);
19 | Assert.Equal(solver.GetMin(), -2);
20 | }
21 | }
22 | }
--------------------------------------------------------------------------------
/LeetCodeNet.Tests/Easy/Design/DesignHashMap_706_test.cs:
--------------------------------------------------------------------------------
1 | using LeetCodeNet.Easy.Design;
2 |
3 | namespace LeetCodeNet.Tests.Easy.Design
4 | {
5 | public sealed class DesignHashMap_706_test
6 | {
7 | [Fact]
8 | public void Check()
9 | {
10 | var solver = new MyHashMap();
11 |
12 | solver.Put(1, 1);
13 | solver.Put(2, 2);
14 | Assert.Equal(1, solver.Get(1));
15 | Assert.Equal(-1, solver.Get(3));
16 | solver.Put(2,1);
17 | Assert.Equal(1, solver.Get(2));
18 | solver.Remove(2);
19 | Assert.Equal(-1, solver.Get(2));
20 | }
21 | }
22 | }
--------------------------------------------------------------------------------
/LeetCodeNet/DataStructs/Node.cs:
--------------------------------------------------------------------------------
1 | namespace LeetCodeNet.DataStructs
2 | {
3 | ///
4 | /// Graph node
5 | ///
6 | public class Node
7 | {
8 | public int val;
9 | public IList neighbors;
10 |
11 | public Node()
12 | {
13 | val = 0;
14 | neighbors = new List();
15 | }
16 |
17 | public Node(int _val)
18 | {
19 | val = _val;
20 | neighbors = new List();
21 | }
22 |
23 | public Node(int _val, List _neighbors)
24 | {
25 | val = _val;
26 | neighbors = _neighbors;
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/LeetCodeNet/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.CompilerServices;
2 | using System.Runtime.InteropServices;
3 |
4 | // In SDK-style projects such as this one, several assembly attributes that were historically
5 | // defined in this file are now automatically added during build and populated with
6 | // values defined in project properties. For details of which attributes are included
7 | // and how to customise this process see: https://aka.ms/assembly-info-properties
8 |
9 | // Setting ComVisible to false makes the types in this assembly not visible to COM
10 | // components. If you need to access a type in this assembly from COM, set the ComVisible
11 | // attribute to true on that type.
12 |
13 | [assembly: ComVisible(false)]
14 |
15 | // The following GUID is for the ID of the typelib if this project is exposed to COM.
16 |
17 | [assembly: Guid("24914151-68bd-9691-21c5-e2ddd0042276")]
18 |
19 | [assembly: InternalsVisibleTo("LeetCodeNet.Tests")]
20 | [assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")]
--------------------------------------------------------------------------------
/.github/workflows/dotnet-desktop.yml:
--------------------------------------------------------------------------------
1 | name: Dotnet format
2 |
3 | on: push
4 |
5 | jobs:
6 | check-format:
7 | runs-on: windows-2019
8 |
9 | steps:
10 | - uses: actions/checkout@v3
11 |
12 | - name: Setup .NET
13 | uses: actions/setup-dotnet@v3
14 | with:
15 | dotnet-version: 6.0.x
16 |
17 | - name: Setup NuGet
18 | uses: NuGet/setup-nuget@v1.0.5
19 |
20 | - name: Restore dependencies
21 | run: dotnet restore
22 |
23 | - name: Build
24 | run: dotnet build --configuration Release
25 |
26 | - name: Test
27 | run: dotnet test --logger "trx;LogFileName=test-results.trx" || true
28 |
29 | - name: Test Report
30 | uses: dorny/test-reporter@v1
31 | if: always()
32 | with:
33 | name: DotNET Tests
34 | path: "**/test-results.trx"
35 | reporter: dotnet-trx
36 | fail-on-error: true
37 |
--------------------------------------------------------------------------------
/LeetCodeNet.Tests/Medium/Graph/CloneGraph_133_test.cs:
--------------------------------------------------------------------------------
1 | using LeetCodeNet.DataStructs;
2 | using LeetCodeNet.Medium.Graph;
3 |
4 | namespace LeetCodeNet.Tests.Medium.Graph
5 | {
6 | public sealed class CloneGraph_133_test
7 | {
8 | [Fact]
9 | public void Check()
10 | {
11 | var node1 = new Node(1);
12 | var node2 = new Node(2);
13 | var node3 = new Node(3);
14 | var node4 = new Node(4);
15 |
16 | node1.neighbors.Add(node2);
17 | node1.neighbors.Add(node4);
18 |
19 | node2.neighbors.Add(node1);
20 | node2.neighbors.Add(node3);
21 |
22 | node3.neighbors.Add(node2);
23 | node3.neighbors.Add(node4);
24 |
25 | node4.neighbors.Add(node3);
26 | node4.neighbors.Add(node1);
27 |
28 | var solver = new CloneGraph_133();
29 |
30 | var result = solver.CloneGraph(node1);
31 |
32 | Assert.Equal(1, result.val);
33 | Assert.NotSame(node1, result);
34 | }
35 | }
36 | }
--------------------------------------------------------------------------------
/LeetCodeNet.Tests/Medium/Design/FrequencyTracker_2671_test.cs:
--------------------------------------------------------------------------------
1 | using LeetCodeNet.Medium.Design;
2 |
3 | namespace LeetCodeNet.Tests.Medium.Design
4 | {
5 | public sealed class FrequencyTracker_2671_test
6 | {
7 | [Fact]
8 | public void Check()
9 | {
10 | var searcher = new FrequencyTracker();
11 |
12 | searcher.Add(3);
13 | searcher.Add(3);
14 |
15 | Assert.True(searcher.HasFrequency(2));
16 | }
17 |
18 | [Fact]
19 | public void Check1()
20 | {
21 | var searcher = new FrequencyTracker();
22 |
23 | searcher.Add(1);
24 | searcher.DeleteOne(1);
25 |
26 | Assert.False(searcher.HasFrequency(1));
27 | }
28 |
29 | [Fact]
30 | public void Check3()
31 | {
32 | var searcher = new FrequencyTracker();
33 |
34 | Assert.False(searcher.HasFrequency(2));
35 |
36 | searcher.Add(3);
37 |
38 | Assert.True(searcher.HasFrequency(1));
39 | }
40 | }
41 | }
--------------------------------------------------------------------------------
/LeetCodeNet/Easy/BitManipulation/ReverseBits_190.cs:
--------------------------------------------------------------------------------
1 | namespace LeetCodeNet.Easy.BitManipulation
2 | {
3 | ///
4 | /// https://leetcode.com/problems/reverse-bits/
5 | ///
6 | /// Reverse bits of a given 32 bits unsigned integer.
7 | internal sealed class ReverseBits_190
8 | {
9 | ///
10 | /// Bit solution
11 | ///
12 | /// Number
13 | /// Reversed number
14 | ///
15 | /// Time complexity: O(1)
16 | /// Space complexity: O(1)
17 | ///
18 | public uint reverseBits(uint n)
19 | {
20 | uint result = 0;
21 |
22 | // We have 32 bit number, so to not to miss spaces - we will iterate through all digits
23 | for (var i = 0; i < 32; ++i)
24 | {
25 | result <<= 1;
26 | result |= (n & 1);
27 | n >>= 1;
28 | }
29 |
30 | return result;
31 | }
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/LeetCodeNet.Tests/Medium/Strings/CountAndSay_38_test.cs:
--------------------------------------------------------------------------------
1 | using System.Collections;
2 | using LeetCodeNet.Medium.Strings;
3 |
4 | namespace LeetCodeNet.Tests.Medium.Strings
5 | {
6 | public sealed class CountAndSay_38_test
7 | {
8 | [Theory, ClassData(typeof(CountAndSayTestData))]
9 | public void CheckRecursive(int inputData, string expected)
10 | {
11 | var solver = new CountAndSay_38();
12 |
13 | Assert.Equal(expected, solver.CountAndSayRecursive(inputData));
14 | }
15 | }
16 |
17 | public sealed class CountAndSayTestData : IEnumerable