Exemple #1
0
        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();
        }