static void Main(string[] args) { #region LeetCode #region 1. Two Sum foreach (var i in Solutions.TwoSum(new int[] { -1, 5, 11, 15 }, 10)) { Console.WriteLine(i); } #endregion #region 7. Reverse Integer Console.WriteLine(Solutions.Reverse(123) == 321); Console.WriteLine(Solutions.Reverse(-123) == -321); Console.WriteLine(Solutions.Reverse(120) == 21); Console.WriteLine(Solutions.Reverse(int.MaxValue) == 0); #endregion #region 13. Roman to Integer Console.WriteLine(Solutions.RomanToInt("III") == 3); Console.WriteLine(Solutions.RomanToInt("IV") == 4); Console.WriteLine(Solutions.RomanToInt("IX") == 9); Console.WriteLine(Solutions.RomanToInt("LVIII") == 58); Console.WriteLine(Solutions.RomanToInt("MCMXCIV") == 1994); #endregion #region 14. Longest Common Prefix Console.WriteLine(Solutions.GetLongestCommonPrefix(new[] { "flower", "flow", "flight" }) == "fl"); Console.WriteLine(Solutions.GetLongestCommonPrefix(new[] { "dog", "racecar", "car" }) == ""); #endregion #region 20. Valid Parentheses Console.WriteLine(Solutions.IsValidParentheses("()")); Console.WriteLine(Solutions.IsValidParentheses("()[]{}")); Console.WriteLine(!Solutions.IsValidParentheses("(]")); Console.WriteLine(!Solutions.IsValidParentheses("([)]")); Console.WriteLine(Solutions.IsValidParentheses("{[]}")); #endregion #region 21. Merge Two Sorted Lists Console.WriteLine(Solutions.MergeTwoSortedList(new ListNode(1, new ListNode(2, new ListNode(4))), new ListNode(1, new ListNode(3, new ListNode(4)))).Equals(new ListNode(1, new ListNode(1, new ListNode(2, new ListNode(3, new ListNode(4, new ListNode(4)))))))); #endregion #region 53. Maximum Subarray Console.WriteLine(Solutions.MaxSubArray(new[] { -2, 1, -3, 4, -1, 2, 1, -5, 4 }) == 6); #endregion #region 70. Climbing Stairs Console.WriteLine(Solutions.ClimbStairs(2) == 2); Console.WriteLine(Solutions.ClimbStairs(3) == 3); #endregion #region 101. Symmetric Tree Console.WriteLine(Solutions.IsSymmetric(new TreeNode(1, new TreeNode(2, new TreeNode(3), new TreeNode(4)), new TreeNode(2, new TreeNode(4), new TreeNode(3))))); Console.WriteLine(!Solutions.IsSymmetric(new TreeNode(1, new TreeNode(2, null, new TreeNode(3)), new TreeNode(2, null, new TreeNode(3))))); Console.WriteLine(IsSymmetric(new TreeNode(1, new TreeNode(2, new TreeNode(3), new TreeNode(4)), new TreeNode(2, new TreeNode(4), new TreeNode(3))))); Console.WriteLine(!IsSymmetric(new TreeNode(1, new TreeNode(2, null, new TreeNode(3)), new TreeNode(2, null, new TreeNode(3))))); #endregion #region 141. Linked List Cycle Console.WriteLine(Solutions.HasCycle(new ListNode(3, new ListNode(2, new ListNode(0, new ListNode(-4)))))); Console.WriteLine(Solutions.HasCycle(new ListNode(1, new ListNode(2)))); Console.WriteLine(Solutions.HasCycle(new ListNode(1))); Console.WriteLine(Solutions.HasCycleViaHashSet(new ListNode(3, new ListNode(2, new ListNode(0, new ListNode(-4)))))); Console.WriteLine(Solutions.HasCycleViaHashSet(new ListNode(1, new ListNode(2)))); Console.WriteLine(!Solutions.HasCycleViaHashSet(new ListNode(1))); #endregion #region 160. Intersection of Two Linked Lists var result = Solutions.GetInterSectionModelBySameLength( new ListNode(4, new ListNode(1, new ListNode(8, new ListNode(4, new ListNode(5))))), new ListNode(5, new ListNode(0, new ListNode(1, new ListNode(8, new ListNode(4, new ListNode(5))))))); #endregion #region 169. Majority Element Console.WriteLine(Solutions.MajorityElement(new[] { 3, 2, 3 }) == 3); Console.WriteLine(Solutions.MajorityElement(new[] { 2, 2, 1, 1, 1, 2, 2 }) == 2); Console.WriteLine(MajorityElement(new[] { 3, 2, 3 }) == 3); Console.WriteLine(MajorityElement(new[] { 2, 2, 1, 1, 1, 2, 2 }) == 2); #endregion #region 198. House Robber Console.WriteLine(Solutions.Rob(new[] { 1, 2, 3, 1 }) == 4); Console.WriteLine(Solutions.Rob(new[] { 2, 7, 9, 3, 1 }) == 12); Console.WriteLine(Rob(new[] { 1, 2, 3, 1 }) == 4); Console.WriteLine(Rob(new[] { 2, 7, 9, 3, 1 }) == 12); #endregion #region 206. Reverse Linked List Console.WriteLine(ListNode.Equals(Solutions.ReverseList(new ListNode(1, new ListNode(2, new ListNode(3, new ListNode(4, new ListNode(5)))))), new ListNode(5, new ListNode(4, new ListNode(3, new ListNode(2, new ListNode(1))))))); Console.WriteLine(ListNode.Equals(ReverseList(new ListNode(1, new ListNode(2, new ListNode(3, new ListNode(4, new ListNode(5)))))), new ListNode(5, new ListNode(4, new ListNode(3, new ListNode(2, new ListNode(1))))))); #endregion #region 226. Invert Binary Tree Console.WriteLine(TreeNode.IsSame(Solutions.InvertTree(new TreeNode(4, new TreeNode(2, new TreeNode(1), new TreeNode(3)), new TreeNode(7, new TreeNode(6), new TreeNode(9)))), new TreeNode(4, new TreeNode(7, new TreeNode(9), new TreeNode(6)), new TreeNode(2, new TreeNode(3), new TreeNode(1))))); Console.WriteLine(TreeNode.IsSame(InvertTree(new TreeNode(4, new TreeNode(2, new TreeNode(1), new TreeNode(3)), new TreeNode(7, new TreeNode(6), new TreeNode(9)))), new TreeNode(4, new TreeNode(7, new TreeNode(9), new TreeNode(6)), new TreeNode(2, new TreeNode(3), new TreeNode(1))))); #endregion #region 234. Palindrome Linked List Console.WriteLine(!Solutions.IsPalindrome(new ListNode(1, new ListNode(2)))); Console.WriteLine(Solutions.IsPalindrome(new ListNode(1, new ListNode(2, new ListNode(2, new ListNode(1)))))); Console.WriteLine(!IsPalindrome(new ListNode(1, new ListNode(2)))); Console.WriteLine(IsPalindrome(new ListNode(1, new ListNode(2, new ListNode(2, new ListNode(1)))))); #endregion #region 283. Move Zeroes Solutions.MoveZeroes(new[] { 0, 1, 0, 3, 12 }); MoveZeroes(new[] { 0, 1, 0, 3, 12 }); #endregion #region 437. Path Sum III Console.WriteLine(PathSum(new TreeNode(10, new TreeNode(5, new TreeNode(3, new TreeNode(3), new TreeNode(-2)), new TreeNode(2, null, new TreeNode(1))), new TreeNode(-3, null, new TreeNode(11))), 8) == 3); #endregion #region 438. Find All Anagrams in a String //Console.WriteLine(Solutions.FindAnagrams("abab", "ab")); //Console.WriteLine(Solutions.FindAnagrams("cbaebabacd", "abc")); Console.WriteLine(Solutions.FindAnagrams_My("abab", "ab")); Console.WriteLine(Solutions.FindAnagrams_My("cbaebabacd", "abc")); Console.WriteLine(Solutions.FindAnagrams_My("ababababab", "aab")); #endregion #region 448. Find All Numbers Disappeared in an Array Console.WriteLine(Solutions.FindDisappearedNumbers(new[] { 4, 3, 2, 7, 8, 2, 3, 1 })); Console.WriteLine(FindDisappearedNumbers(new[] { 4, 3, 2, 7, 8, 2, 3, 1 })); #endregion #region 461. Hamming Distance Console.WriteLine(Solutions.HammingDistance(1, 4) == 2); #endregion #region 538. Convert BST to Greater Tree Console.WriteLine( TreeNode.IsSame(Solutions.ConvertBstToGreaterTree(new TreeNode(5, new TreeNode(2), new TreeNode(13))), new TreeNode(18, new TreeNode(20), new TreeNode(13)))); Console.WriteLine(Solutions.ConvertBstToGreaterTree(new TreeNode(5, new TreeNode(2, new TreeNode(1), new TreeNode(3)), new TreeNode(13, new TreeNode(10), new TreeNode(17))))); #endregion #region 543. Diameter of Binary Tree Console.WriteLine(Solutions.DiameterOfBinaryTree(new TreeNode(1, new TreeNode(2, new TreeNode(4), new TreeNode(5)), new TreeNode(3))) == 3); #endregion #region 581. Shortest Unsorted Continuous Subarray Console.WriteLine(Solutions.FindUnsortedSubarray(new[] { 2, 6, 4, 8, 10, 9, 15 }) == 5); int[] subArr; Console.WriteLine(Solutions.FindUnsortSubArrary(new int[] { 2, 6, 4, 8, 10, 9, 15 }, out subArr) == 5); #endregion #region 617. Merge Two Binary Trees Console.WriteLine(TreeNode.Equals(Solutions.MergeTrees(new TreeNode(1, new TreeNode(3, new TreeNode(5), null), new TreeNode(2)), new TreeNode(2, new TreeNode(1, null, new TreeNode(4)), new TreeNode(3, null, new TreeNode(7)))), new TreeNode(3, new TreeNode(4, new TreeNode(5), new TreeNode(4)), new TreeNode(5, null, new TreeNode(7))))); #endregion #region 771. Jewels and Stones Console.WriteLine(Solutions.NumJewelsInStones("z", "ZZZ") == 0); Console.WriteLine(Solutions.NumJewelsInStones("aA", "aAAbbbb") == 3); #endregion #region 915. Partition Array into Disjoint Intervals var o915 = Solutions.PartitionDisjoint(new int[] { 5, 0, 3, 8, 6 }); Console.WriteLine(o915 == 3); o915 = Solutions.PartitionDisjoint(new int[] { 1, 1, 1, 0, 6, 12 }); Console.WriteLine(o915 == 4); #endregion #region 250. Count Univalue Subtrees Console.WriteLine(Solutions.CountUniValueSubtrees(new TreeNode(5, new TreeNode(1, new TreeNode(5), new TreeNode(5)), new TreeNode(5, null, new TreeNode(5)))) == 4); Console.WriteLine(Solutions.CountUniValueSubtrees(new TreeNode(1, new TreeNode(3, new TreeNode(4), new TreeNode(5)), new TreeNode(2, null, new TreeNode(6)))) == 3); #endregion Console.WriteLine(Solutions.NumUniqueEmails(new[] { "*****@*****.**", "*****@*****.**", "*****@*****.**" }) == 2); Console.WriteLine(Solutions.TotalFruit(new[] { 1, 2, 1 }) == 3); Console.WriteLine(Solutions.TotalFruit(new[] { 0, 1, 2, 2 }) == 3); Console.WriteLine(Solutions.TotalFruit(new[] { 1, 2, 3, 2, 2 }) == 4); Console.WriteLine(Solutions.TotalFruit(new[] { 3, 3, 3, 1, 2, 1, 1, 2, 3, 3, 4 }) == 5); #endregion Console.ReadKey(); }