Пример #1
0
    def test_solve_func(self):
        test_data_list = [(ListNode(1, ListNode(2, ListNode(4, None))),
                           ListNode(1, ListNode(3, ListNode(4, None)))),
                          (ListNode(1, ListNode(2, ListNode(4, None))), None),
                          (None, ListNode(1, ListNode(3, ListNode(4, None)))),
                          (ListNode(1, ListNode(2, ListNode(3, None))),
                           ListNode(4, ListNode(5, None)))]
        right_answer_list = [
            ListNode(
                1,
                ListNode(
                    1, ListNode(2, ListNode(3, ListNode(4, ListNode(4,
                                                                    None)))))),
            ListNode(1, ListNode(2, ListNode(4, None))),
            ListNode(1, ListNode(3, ListNode(4, None))),
            ListNode(1, ListNode(2, ListNode(3, ListNode(4, ListNode(5,
                                                                     None))))),
        ]

        for test_data, right_answer in zip(test_data_list, right_answer_list):
            s = Solution()
            my_answer = s.mergeTwoLists(l1=test_data[0], l2=test_data[1])
            right_answer_list = list()
            while right_answer is not None:
                right_answer_list.append(right_answer.val)
                right_answer = right_answer.next
            my_answer_list = list()
            while my_answer is not None:
                my_answer_list.append(my_answer.val)
                my_answer = my_answer.next
            self.assertEqual(right_answer_list, my_answer_list,
                             "测试用例:{}".format(test_data))
Пример #2
0
def main():
    sol = Solution()
    # test_str = "abcdaabbcc"
    # test_str = "bbbbbb"
    # test_str = "aab"
    test_str = "abba"
    print sol.lengthOfLongestSubstring(test_str)
Пример #3
0
    def test_solve_func(self):
        test_data_list = [
            ListNode(1, ListNode(2, ListNode(3, ListNode(4, ListNode(5,
                                                                     None))))),
            ListNode(1, ListNode(2, ListNode(3, ListNode(4, None)))),
            ListNode(1, ListNode(2, ListNode(3, None))),
            ListNode(1, ListNode(2, None)),
            ListNode(1, None), None
        ]
        right_answer_data = [
            ListNode(2, ListNode(1, ListNode(4, ListNode(3, ListNode(5,
                                                                     None))))),
            ListNode(2, ListNode(1, ListNode(4, ListNode(3, None)))),
            ListNode(2, ListNode(1, ListNode(3, None))),
            ListNode(2, ListNode(1, None)),
            ListNode(1, None), None
        ]

        s = Solution()
        for each_test_data, each_right_answer in zip(test_data_list,
                                                     right_answer_data):
            my_answer = s.swapPairs(head=each_test_data)
            right_answer = each_right_answer
            right_answer_list = list()
            while right_answer is not None:
                right_answer_list.append(right_answer.val)
                right_answer = right_answer.next
            my_answer_list = list()
            while my_answer is not None:
                my_answer_list.append(my_answer.val)
                my_answer = my_answer.next
            print("[*] 测试数据:{}".format(my_answer_list))
            self.assertEqual(right_answer_list, my_answer_list,
                             "测试用例:{}".format(right_answer_list))
Пример #4
0
    def test_solve_func(self):
        test_data_list = [
            ListNode(1, ListNode(4, ListNode(5, None))),
            ListNode(1, ListNode(3, ListNode(4, None))),
            ListNode(2, ListNode(6, None)),
        ]
        right_answer = (ListNode(
            1,
            ListNode(
                1,
                ListNode(
                    2,
                    ListNode(
                        3,
                        ListNode(4, ListNode(4, ListNode(5,
                                                         ListNode(6,
                                                                  None)))))))))

        s = Solution()
        my_answer = s.mergeKLists(lists=test_data_list)
        right_answer_list = list()
        while right_answer is not None:
            right_answer_list.append(right_answer.val)
            right_answer = right_answer.next
        my_answer_list = list()
        while my_answer is not None:
            my_answer_list.append(my_answer.val)
            my_answer = my_answer.next
        self.assertEqual(right_answer_list, my_answer_list,
                         "测试用例:{}".format(test_data_list))
Пример #5
0
def main():
    sol = Solution()
    matrix = [[1,2,3],
              [4,5,6],
              [7,8,9]]
    sol.rotate(matrix)
    print matrix
Пример #6
0
    def test_solve_func(self):
        test_data_list = ["23", ""]
        right_answer_list = [["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"], ""]

        for test_data, right_answer in zip(test_data_list, right_answer_list):
            s = Solution()
            my_answer = s.letterCombinations(digits=test_data)
            self.assertEqual(my_answer, right_answer)
Пример #7
0
    def test_solve_func(self):
        test_data_list = ["babcd","cbbd","abb","aacdefcaa"]
        right_answer_list = ["bab","bb","bb","aa"]

        for test_data, right_answer in zip(test_data_list, right_answer_list):
            s = Solution()
            my_answer = s.longestPalindrome(s=test_data)
            self.assertEqual(my_answer, right_answer)
Пример #8
0
    def test_solve_func(self):
        test_data_list = [3, 4, 9, 58, 1994]
        right_answer_list = ["III", "IV", "IX", "LVIII", "MCMXCIV"]

        for test_data, right_answer in zip(test_data_list, right_answer_list):
            s = Solution()
            my_answer = s.intToRoman(num=test_data)
            self.assertEqual(my_answer, right_answer)
Пример #9
0
    def test_solve_func(self):
        test_data_list = [([2, 7, 11, 15], 9), ([2, 11, 7], 9)]
        right_answer_list = [[0, 1], [0, 2]]

        for test_data, right_answer in zip(test_data_list, right_answer_list):
            s = Solution()
            self.assertEqual(s.twoSum(nums=test_data[0], target=test_data[1]),
                             right_answer)
Пример #10
0
    def test_solve_func(self):
        test_data_list = [123, -123, 120, 1534236469]
        right_answer_list = [321, -321, 21, 0]

        for test_data, right_answer in zip(test_data_list, right_answer_list):
            s = Solution()
            my_answer = s.reverse(x=test_data)
            self.assertEqual(my_answer, right_answer)
Пример #11
0
    def test_solve_func(self):
        test_data_list = ["()", "()[]{}", "(]", "([)]", "{[]}", "]", "["]
        right_answer_list = [True, True, False, False, True, False, False]

        for test_data, right_answer in zip(test_data_list, right_answer_list):
            s = Solution()
            my_answer = s.isValid(s=test_data)
            self.assertEqual(right_answer, my_answer, "测试用例:{}".format(test_data))
Пример #12
0
def main():
    sol = Solution()
    board = [[1,0,1,1],
             [1,1,0,0],
             [0,0,0,1],
             [1,0,1,1]]
    sol.gameOfLife(board)
    print board
Пример #13
0
    def test_solve_func(self):
        test_data_list = [" ", "abcabcbb", "bbbbb"]
        right_answer_list = [1, 3, 1]

        for test_data, right_answer in zip(test_data_list, right_answer_list):
            s = Solution()
            my_answer = s.lengthOfLongestSubstring(s=test_data)
            self.assertEqual(my_answer, right_answer)
Пример #14
0
    def test_solve_func(self):
        test_data_list = [["flower", "flow", "flight"],
                          ["dog", "racecar", "car"]]
        right_answer_list = ["fl", ""]

        for test_data, right_answer in zip(test_data_list, right_answer_list):
            s = Solution()
            my_answer = s.longestCommonPrefix(strs=test_data)
            self.assertEqual(my_answer, right_answer)
Пример #15
0
    def test_solve_func(self):
        test_data_list = [("aa", "a"), ("aa", "a*"), ("ab", ".*"),
                          ("aab", "c*a*b"), ("mississippi", "mis*is*p*.")]
        right_answer_list = [False, True, True, True, False]

        for test_data, right_answer in zip(test_data_list, right_answer_list):
            s = Solution()
            my_answer = s.isMatch(s=test_data[0], p=test_data[1])
            self.assertEqual(my_answer, right_answer)
Пример #16
0
    def test_solve_func(self):
        test_data_list = [([1, 3], [2]), ([1, 2], [3, 4])]
        right_answer_list = [2.0, 2.5]

        for test_data, right_answer in zip(test_data_list, right_answer_list):
            s = Solution()
            my_answer = s.findMedianSortedArrays(nums1=test_data[0],
                                                 nums2=test_data[1])
            self.assertEqual(my_answer, right_answer)
Пример #17
0
    def test_solve_func(self):
        test_data_list = [([-1, 2, 1, -4], 1), ([0, 1, 2], 3),
                          ([0, 2, 1, -3], 1)]
        right_answer_list = [2, 3, 0]

        for test_data, right_answer in zip(test_data_list, right_answer_list):
            s = Solution()
            my_answer = s.threeSumClosest(nums=test_data[0],
                                          target=test_data[1])
            self.assertEqual(my_answer, right_answer)
Пример #18
0
    def test_solve_func(self):
        test_data_list = [([1, 0, -1, 0, -2, 2], 0), ([0, 0, 0, 0], 0), ([-3, -2, -1, 0, 0, 1, 2, 3], 0)]
        right_answer_list = [[[-2, -1, 1, 2], [-2, 0, 0, 2], [-1, 0, 0, 1]], [[0, 0, 0, 0]],
                             [[-3, -2, 2, 3], [-3, -1, 1, 3], [-3, 0, 0, 3], [-3, 0, 1, 2], [-2, -1, 0, 3],
                              [-2, -1, 1, 2], [-2, 0, 0, 2], [-1, 0, 0, 1]]]

        for test_data, right_answer in zip(test_data_list, right_answer_list):
            s = Solution()
            my_answer = s.fourSum(nums=test_data[0], target=test_data[1])
            self.assertEqual(right_answer, my_answer)
Пример #19
0
def main():
    sol = Solution()
    node = ListNode(1)
    node.next = ListNode(2)
    node.next.next = ListNode(3)
    node.next.next.next = ListNode(4)
    head = sol.swapPairs(node)
    while head:
        print head.val,
        head = head.next
Пример #20
0
def main():
    sol = Solution()
    l1 = ListNode(1)
    l1.next = ListNode(2)
    l1.next.next = ListNode(3)
    l2 = ListNode(4)
    l2.next = ListNode(7)
    sumval = sol.addTwoNumbers(l1, l2)
    while sumval:
        print sumval.val,
        sumval = sumval.next
Пример #21
0
    def test_solve_func(self):
        test_data_list = [3]
        right_answer_list = [[
            "((()))", "(()())", "(())()", "()(())", "()()()"
        ]]

        for test_data, right_answer in zip(test_data_list, right_answer_list):
            s = Solution()
            my_answer = s.generateParenthesis(n=test_data)
            self.assertEqual(right_answer, my_answer,
                             "测试用例:{}".format(test_data))
Пример #22
0
    def test_solve_func(self):
        test_data_list = [("LEETCODEISHIRING", 3), ("LEETCODEISHIRING", 4),
                          ("ABC", 1), ("ABCDEF", 2)]
        right_answer_list = [
            "LCIRETOESIIGEDHN", "LDREOEIIECIHNTSG", "ABC", "ACEBDF"
        ]

        for test_data, right_answer in zip(test_data_list, right_answer_list):
            s = Solution()
            my_answer = s.convert(s=test_data[0], numRows=test_data[1])
            self.assertEqual(my_answer, right_answer)
Пример #23
0
    def test_solve_func(self):
        test_data_list = [
            "42", "   -42", "4193 with words", "words and 987", "-91283472332",
            "-a", "3.14159", "", "0-1", "+1", "   +0 123", "2147483648"
        ]
        right_answer_list = [
            42, -42, 4193, 0, -2147483648, 0, 3, 0, 0, 1, 0, 2147483647
        ]

        for test_data, right_answer in zip(test_data_list, right_answer_list):
            s = Solution()
            my_answer = s.myAtoi(str=test_data)
            self.assertEqual(my_answer, right_answer)
Пример #24
0
    def test_solve_func(self):
        test_data_list = [
            (self.ListNode(2, self.ListNode(4, self.ListNode(3, None))),
             self.ListNode(5, self.ListNode(6, self.ListNode(4, None)))),
            (self.ListNode(1, None), self.ListNode(2, None))
        ]
        right_answer_list = [
            self.ListNode(7, self.ListNode(0, self.ListNode(8, None))),
            self.ListNode(3, None)
        ]

        for test_data, right_answer in zip(test_data_list, right_answer_list):
            s = Solution()
            my_answer = s.addTwoNumbers(l1=test_data[0], l2=test_data[1])
            self.assertEqual(my_answer.val, right_answer.val)
            while my_answer.next:
                my_answer = my_answer.next
                right_answer = right_answer.next
                self.assertEqual(my_answer.val, right_answer.val)
Пример #25
0
def main():
    s = Solution()

    if (s.solve(solve_method)):

        # Display SOlution on console
        s.show_solution()

        output_file_name = f"{solve_method}"
        # Draw legend if legend_flag is set
        if legend_flag:
            if legend_flag[0].upper() == 'T':
                output_file_name += "_legend.png"
                s.draw_legend()
            else:
                output_file_name += ".png"
        else:
            output_file_name += ".png"

        # Write State space tree
        s.write_image(output_file_name)
    else:
        raise Exception("No solution found")
Пример #26
0
def main():
    sol = Solution()
    number = 499
    print number
    print sol.intToRoman(number)
Пример #27
0
def main():
    sol = Solution()
    words = ['a', 'aa', 'aaa', 'aaaa']
    print sol.maxProduct(words)
Пример #28
0
def main():
    sol = Solution()
    n = 5
    print sol.numTrees(n)
Пример #29
0
def main():
    sol = Solution()
    n = 14
    print sol.isUgly(n)
Пример #30
0
def main():
    sol = Solution()
    print sol.canWinNim2(27)
Пример #31
0
def main():
    sol = Solution()
    n = 43261596
    print sol.reverseBits(n)
Пример #32
0
def main():
    sol = Solution()
    n = 256
    print sol.isPowerOfTwo(n)
Пример #33
0
def test_1():
        assert(Solution.subarraysDivByK(None, [4, 5, 0, -2, -3, 1], 5) == 7)
Пример #34
0
def test_6():
    assert(Solution.lengthOfLongestSubstring(None, 'au') == 2)
Пример #35
0
def main():
    sol = Solution()
    n = 4096
    print sol.isPowerOfFour(n)
Пример #36
0
def test_1():
    assert(Solution.lengthOfLongestSubstring(None, 'bbbb') == 1)
Пример #37
0
from solve import Solution

test_obj = Solution()


def test_1():
    assert (test_obj.countSquares([[0, 1, 1, 1], [1, 1, 1, 1], [0, 1, 1,
                                                                1]]) == 15)


def test_2():
    assert (test_obj.countSquares([[1, 0, 1], [1, 1, 0], [1, 1, 0]]) == 7)


def test_3():
    assert (test_obj.countSquares([[1]]) == 1)
Пример #38
0
def test_2():
    assert(Solution.lengthOfLongestSubstring(None, 'wqwerq') == 4)
Пример #39
0
def main():
    sol = Solution()
    n = 36
    print sol.bulbSwitch(n)
Пример #40
0
def main():
    sol = Solution()
    print sol.maxDepth(178)
Пример #41
0
def test_2():
    assert (Solution.partitionDisjoint(None, [1, 1, 1, 0, 6, 12]) == 4)
Пример #42
0
def main():
    sol = Solution()
    s = '-2147483648'
    print sol.myAtoi(s)
Пример #43
0
def main():
    sol = Solution()
    s = 'hello'
    print sol.reverseString(s)
Пример #44
0
def main():
    sol = Solution()
    string = 'PAYPALISHIRING'
    print sol.convert(string, 3)
Пример #45
0
def test_3():
    assert(Solution.lengthOfLongestSubstring(None, '') == 0)
Пример #46
0
def main():
    sol = Solution()
    nums = [1,2,3,4,5,6,7]
    k = 3
    print sol.rotate(nums, k)
Пример #47
0
def main():
    sol = Solution()
    prices = [1,2,3,0,2]
    print sol.maxProfit(prices)
Пример #48
0
def test_4():
    assert(Solution.lengthOfLongestSubstring(None, 'abcabcbb') == 3)
Пример #49
0
def main():
    sol = Solution()
    strs = ['eat','tea','tan','ate','nat','bat']
    print sol.groupAnagrams(strs)
Пример #50
0
def main():
    sol = Solution()
    n = 243
    print sol.isPowerOfThree(n)
Пример #51
0
def main():
    sol = Solution()
    prices = [5,1,2,3,4,0]
    print sol.maxProfit(prices)
Пример #52
0
def main():
    sol = Solution()
    digits = [7,9,9]
    print sol.plusOne(digits)
Пример #53
0
    def test_solve_func(self):
        test_data_list = [
            [0, 0, 0], [1, 1, -2], [-1, 0, 1, 2, -1, -4],
            [
                -6, -8, -9, 4, -14, 6, -10, 7, 12, 13, 4, 9, 7, 14, -12, 7, 0,
                14, -1, -3, 2, 2, -3, 11, -6, -10, -13, -13, 1, -9,
                2, 2, -2, 8, -9, 0, -9, -12, 14, 10, 8, 3, 4, 0, -6, 7, 14, 9,
                6, -2, 13, -15, 8, -5, 3, -13, -8, 5, -11, 0, 11, 6, -13, -14,
                -9, -15, -7, -11, 10, -7, 14, 4, 3, 3, 11, 13, -13, 11, -1, 0,
                -6, -10, 0, 9, 0, 10, 11, 0, 0, -14, -15, -12, -1, 10, 12, -2,
                2, -10, 2, -2, -10, 2, -13, 1, 12, 5, -1, -15, 1, 5, -8, 3, 10,
                8
            ],
            [
                7, 5, -8, -6,
                -13, 7, 10, 1, 1, -4, -14, 0, -1, -10, 1, -13, -4, 6, -11,
                8, -6, 0, 0, -5, 0, 11, -9, 8, 2, -6, 4, -14, 6, 4, -5, 0, -12,
                12, -13, 5, -6, 10, -10, 0, 7, -2, -5, -12, 12, -9, 12, -9, 6,
                -11, 1, 14, 8, -1, 7, -13, 8, -11, -11, 0, 0, -1, -15, 3, -11,
                9, -7, -10, 4, -2, 5, -4, 12, 7, -8, 9, 14, -11, 7, 5, -15,
                -15, -4, 0, 0, -11, 3, -15, -15, 7, 0, 0, 13, -7, -12, 9, 9,
                -3, 14, -1, 2, 5, 2, -9, -3, 1, 7, -12, -3, -1, 1, -2, 0, 12,
                5, 7, 8, -7, 7, 8, 7, -15
            ]
        ]
        right_answer_list = [[0, 0, 0], [
            (-2, 1, 1),
        ], [(-1, -1, 2), (-1, 0, 1)],
                             [
                                 (-8, -2, 10), (-7, 2, 5), (-13, 6, 7),
                                 (-9, -1, 10), (-2, -2, 4), (-7, -6, 13),
                                 (-3, -2, 5), (-7, 3, 4), (-14, 2, 12),
                                 (-12, 4, 8), (-12, 3, 9), (-13, 3, 10),
                                 (-5, -1, 6), (-12, 5, 7), (-11, -2, 13),
                                 (-10, 0, 10), (-9, 2, 7), (-8, 0, 8),
                                 (-7, -3, 10), (-15, 7, 8), (-13, 1, 12),
                                 (-11, 1, 10), (-13, -1, 14), (-8, 1, 7),
                                 (-6, 3, 3), (-8, -3, 11), (-14, 5, 9),
                                 (-2, 1, 1), (-3, 1, 2), (-12, 2, 10),
                                 (-12, -1, 13), (-10, 5, 5), (-7, -2, 9),
                                 (-10, -2, 12), (-13, 0, 13), (-11, 2, 9),
                                 (-9, 4, 5), (-7, -5, 12), (-5, -3, 8),
                                 (-9, 3, 6), (-6, 2, 4), (-5, 0, 5),
                                 (-14, 4, 10), (-2, 0, 2), (-5, 1, 4),
                                 (-2, -1, 3), (-6, -5, 11), (-9, 0, 9),
                                 (-14, 1, 13), (-12, 1, 11), (-10, 3, 7),
                                 (-8, -1, 9), (-11, 3, 8), (-10, 4, 6),
                                 (-6, -2, 8), (-3, -1, 4), (-9, -2, 11),
                                 (-13, 4, 9), (-15, 1, 14), (-8, -5, 13),
                                 (-11, 4, 7), (-11, -1, 12), (-8, 4, 4),
                                 (-15, 4, 11), (-9, 1, 8), (-5, -2, 7),
                                 (-6, -6, 12), (-7, 0, 7), (-14, 0, 14),
                                 (-12, 0, 12), (-10, 2, 8), (-10, -3, 13),
                                 (-10, -1, 11), (-13, 5, 8), (-15, 2, 13),
                                 (-6, 1, 5), (-14, 7, 7), (-8, -6, 14),
                                 (-6, -3, 9), (-7, -1, 8), (-6, -1, 7),
                                 (-11, 5, 6), (-8, 3, 5), (-9, -3, 12),
                                 (-15, 5, 10), (-12, -2, 14), (-1, 0, 1),
                                 (-7, 1, 6), (-13, 2, 11), (-14, 3, 11),
                                 (-7, -7, 14), (-3, -3, 6), (-12, 6, 6),
                                 (0, 0, 0), (-10, 1, 9), (-6, 0, 6),
                                 (-14, 6, 8), (-11, 0, 11), (-5, 2, 3),
                                 (-1, -1, 2), (-11, -3, 14), (-15, 3, 12),
                                 (-8, 2, 6), (-15, 6, 9), (-3, 0, 3),
                                 (-9, -5, 14)
                             ],
                             [
                                 (-8, -2, 10), (-7, 2, 5), (-13, 6, 7),
                                 (-9, -1, 10), (-2, -2, 4), (-7, -6, 13),
                                 (-3, -2, 5), (-7, 3, 4), (-14, 2, 12),
                                 (-12, 4, 8), (-12, 3, 9), (-13, 3, 10),
                                 (-5, -1, 6), (-12, 5, 7), (-11, -2, 13),
                                 (-10, 0, 10), (-9, 2, 7), (-7, -3, 10),
                                 (-8, 0, 8), (-15, 7, 8), (-13, 1, 12),
                                 (-11, 1, 10), (-5, -4, 9), (-13, -1, 14),
                                 (-8, 1, 7), (-6, 3, 3), (-8, -3, 11),
                                 (-14, 5, 9), (-2, 1, 1), (-3, 1, 2),
                                 (-4, -1, 5), (-12, 2, 10), (-12, -1, 13),
                                 (-10, 5, 5), (-7, -2, 9), (-10, -2, 12),
                                 (-13, 0, 13), (-11, 2, 9), (-9, 4, 5),
                                 (-7, -5, 12), (-5, -3, 8), (-4, 2, 2),
                                 (-9, 3, 6), (-6, 2, 4), (-5, 0, 5),
                                 (-8, -4, 12), (-14, 4, 10), (-2, 0, 2),
                                 (-5, 1, 4), (-2, -1, 3), (-6, -5, 11),
                                 (-9, 0, 9), (-14, 1, 13), (-12, 1, 11),
                                 (-10, 3, 7), (-8, -1, 9), (-11, 3, 8),
                                 (-10, 4, 6), (-6, -2, 8), (-4, 1, 3),
                                 (-3, -1, 4), (-9, -2, 11), (-13, 4, 9),
                                 (-15, 1, 14), (-8, -5, 13), (-11, 4, 7),
                                 (-11, -1, 12), (-8, 4, 4), (-15, 4, 11),
                                 (-9, 1, 8), (-5, -2, 7), (-6, -6, 12),
                                 (-7, 0, 7), (-14, 0, 14), (-12, 0, 12),
                                 (-10, 2, 8), (-10, -3, 13), (-5, -5, 10),
                                 (-10, -1, 11), (-4, 0, 4), (-13, 5, 8),
                                 (-15, 2, 13), (-6, 1, 5), (-14, 7, 7),
                                 (-8, -6, 14), (-4, -2, 6), (-6, -3, 9),
                                 (-7, -1, 8), (-6, -1, 7), (-11, 5, 6),
                                 (-8, 3, 5), (-9, -3, 12), (-15, 5, 10),
                                 (-12, -2, 14), (-1, 0, 1), (-7, 1, 6),
                                 (-10, -4, 14), (-13, 2, 11), (-14, 3, 11),
                                 (-7, -7, 14), (-3, -3, 6), (-12, 6, 6),
                                 (-4, -4, 8), (-7, -4, 11), (0, 0, 0),
                                 (-10, 1, 9), (-6, 0, 6), (-14, 6, 8),
                                 (-11, 0, 11), (-5, 2, 3), (-1, -1, 2),
                                 (-11, -3, 14), (-4, -3, 7), (-6, -4, 10),
                                 (-15, 3, 12), (-9, -4, 13), (-8, 2, 6),
                                 (-15, 6, 9), (-3, 0, 3), (-9, -5, 14)
                             ]]

        for test_data, right_answer in zip(test_data_list, right_answer_list):
            s = Solution()
            my_answer = s.threeSum(nums=test_data)
            self.assertTrue(len(my_answer) > 0)
            for each_result in my_answer:
                self.assertEqual(sum(each_result), 0)
Пример #54
0
def main():
    sol = Solution()
    n = 2
    print sol.grayCode(n)
Пример #55
0
def main():
    sol    = Solution()
    citations = [3,0,6,1,5]
    #citations = [9,8,7,6,5]
    print sol.hIndex2(citations)
Пример #56
0
def main():
    sol = Solution()
    n = 200
    print sol.hammingWeight3(n)
Пример #57
0
def main():
    sol = Solution()
    n = 702
    print sol.convertToTitle(n)
Пример #58
0
def main():
    sol    = Solution()
    nums   = [2, 4, 5, 7, 8, 9]
    target = 12
    print sol.twoSum(nums, target)
Пример #59
0
def main():
    sol = Solution()
    nums = [1,3,5,6]
    target = 7
    print sol.searchInsert(nums, target)
Пример #60
0
    def test_solve_func(self):
        test_data_list = [
            [1, 8, 6, 2, 5, 4, 8, 3, 7],
            [
                28, 342, 418, 485, 719, 670, 878, 752, 662, 994, 654, 504, 929,
                660, 424, 855, 922, 744, 600, 229, 728, 33, 371, 863, 561, 772,
                271, 178, 455, 449, 426, 835, 143, 845, 321, 214, 867, 199,
                967, 881, 193, 973, 386, 122, 633, 810, 330, 907, 906, 282,
                136, 986, 315, 860, 849, 229, 632, 473, 759, 87, 922, 185, 922,
                418, 382, 243, 632, 250, 795, 599, 131, 988, 924, 869, 463,
                558, 680, 145, 465, 938, 427, 954, 925, 94, 814, 126, 323, 798,
                599, 434, 885, 874, 620, 159, 292, 354, 755, 924, 956, 550,
                876, 88, 890, 800, 309, 705, 358, 989, 850, 176, 280, 629, 130,
                205, 724, 296, 331, 399, 94, 283, 186, 331, 157, 806, 490, 801,
                512, 597, 725, 469, 499, 601, 909, 390, 754, 218, 447, 112,
                560, 298, 640, 840, 279, 122, 397, 355, 418, 80, 755, 864, 363,
                293, 195, 872, 451, 38, 673, 963, 635, 751, 432, 487, 352, 341,
                229, 458, 912, 676, 923, 472, 326, 563, 312, 606, 686, 709,
                313, 456, 789, 420, 321, 505, 713, 868, 377, 164, 258, 403,
                128, 246, 154, 912, 733, 858, 606, 962, 317, 518, 990, 240,
                990, 317, 803, 302, 275, 841, 363, 588, 650, 504, 9, 323, 9,
                74, 191, 387, 239, 450, 790, 367, 48, 944, 279, 781, 802, 885,
                743, 471, 755, 85, 711, 745, 402, 867, 399, 29, 708, 762, 970,
                710, 267, 331, 33, 276, 405, 577, 15, 644, 379, 157, 363, 427,
                453, 995, 208, 608, 232, 303, 79, 988, 388, 791, 733, 143, 658,
                133, 524, 718, 247, 846, 429, 514, 529, 814, 143, 935, 743,
                510, 931, 122, 668, 647, 901, 473, 642, 461, 81, 874, 764, 513,
                214, 505, 304, 948, 0, 314, 433, 876, 384, 680, 75, 165, 547,
                604, 980, 42, 891, 75, 552, 823, 198, 572, 822, 451, 46, 816,
                913, 479, 42, 29, 992, 257, 886, 648, 557, 238, 962, 990, 115,
                699, 22, 190, 864, 921, 794, 196, 315, 686, 272, 868, 861, 822,
                792, 35, 273, 190, 851, 186, 670, 893, 568, 662, 150, 454, 311,
                59, 693, 625, 49, 808, 324, 424, 350, 189, 697, 496, 737, 13,
                534, 9, 881, 747, 831, 25, 782, 457, 216, 985, 643, 886, 879,
                211, 900, 381, 18, 211, 441, 711, 837, 842, 871, 513, 618, 573,
                702, 316, 69, 440, 329, 956, 801, 562, 703, 633, 587, 486, 90,
                803, 471, 85, 41, 702, 649, 942, 436, 19, 505, 877, 730, 342,
                71, 953, 856, 690, 526, 910, 6, 947, 702, 335, 903, 504, 249,
                607, 489, 836, 445, 931, 992, 268, 368, 33, 971, 369, 327, 407,
                388, 833, 636, 470, 527, 59, 423, 735, 749, 301, 646, 107, 249,
                700, 794, 504, 556, 43, 111, 397, 232, 908, 328, 224, 177, 49,
                609, 500, 418, 937, 259, 159, 770, 247, 629, 297, 306, 405, 33,
                408, 706, 31, 867, 955, 83, 662, 460, 640, 57, 923, 37, 289,
                832, 718, 865, 361, 119, 475, 213, 537, 412, 472, 48, 534, 71,
                678, 183, 377, 83, 568, 137, 141, 599, 5, 449, 35, 19, 261,
                675, 76, 184, 64, 366, 368, 134, 583, 81, 253, 58, 294, 143,
                822, 118, 191, 356, 189, 221, 892, 919, 656, 460, 56, 798, 412,
                61, 247, 447, 80, 508, 474, 509, 44, 538, 227, 765, 673, 810,
                846, 278, 869, 493, 421, 43, 611, 613, 752, 153, 834, 644, 72,
                491, 456, 128, 641, 868, 542, 888, 315, 974, 748, 141, 483,
                144, 32, 710, 909, 705, 873, 108, 983, 94, 601, 757, 137, 564,
                370, 241, 69, 556, 885, 141, 47, 694, 622, 688, 562, 516, 928,
                230, 490, 28, 371, 326, 173, 403, 388, 82, 460, 613, 542, 796,
                707, 495, 553, 197, 412, 275, 438, 481, 831, 676, 623, 231,
                370, 597, 271, 284, 113, 200, 514, 955, 228, 238, 633, 753,
                993, 374, 188, 806, 987, 730, 602, 695, 226, 507, 892, 638,
                782, 330, 471, 965, 358, 94, 196, 728, 43, 468, 365, 508, 20,
                879, 464, 600, 469, 449, 354, 463, 823, 542, 621, 811, 624,
                223, 506, 850, 82, 750, 840, 216, 432, 312, 181, 791, 758, 730,
                871, 802, 550, 236, 310, 570, 468, 126, 522, 289, 576, 228,
                104, 751, 122, 725, 562, 747, 300, 420, 949, 382, 170, 790,
                950, 603, 454, 132, 746, 564, 214, 969, 366, 764, 206, 29, 686,
                26, 507, 208, 315, 435, 789, 420, 187, 911, 145, 101, 658, 446,
                522, 608, 180, 692, 750, 131, 647, 556, 615, 393, 120, 181,
                363, 839, 945, 921, 220, 983, 299, 727, 543, 614, 515, 332,
                386, 54, 244, 884, 155, 254, 682, 29, 214, 862, 722, 964, 345,
                721, 520, 960, 467, 993, 141, 182, 832, 438, 455, 52, 421, 754,
                131, 317, 720, 646, 649, 107, 52, 245, 343, 208, 500, 25, 589,
                714, 239, 311, 31, 585, 385, 903, 897, 852, 896, 391, 386, 728,
                181, 841, 780, 955, 595, 264, 272, 315, 262, 921, 774, 315,
                167, 117, 875, 19, 494, 464, 733, 86, 128, 116, 671, 513, 20,
                920, 717, 916, 663, 103, 997, 845, 944, 129, 800, 891, 393, 72,
                558, 656, 345, 333, 971, 512, 802, 846, 883, 649, 662, 617,
                735, 790, 733, 406, 655, 105, 678, 372, 374, 342, 827, 371,
                187, 123, 500, 339, 14, 246, 411, 573, 902, 108, 258, 225, 973,
                60, 423, 856, 709, 85, 473, 444, 876, 559, 202, 531, 16, 233,
                256, 390, 575, 83, 761, 114, 559, 614, 453, 573, 860, 216, 498,
                114, 324, 756, 339, 649, 169, 762, 506, 230, 199, 979, 27, 427,
                890, 581, 311, 259, 814, 567, 649, 389, 2, 763, 855, 561, 377,
                660, 487, 589, 228, 337, 703, 905, 446, 42, 554, 615, 156, 60,
                197, 707, 392, 576, 135, 282, 158, 446, 541, 324, 365, 543, 66,
                367, 306, 921, 281, 35, 582, 768, 624, 810, 457, 327, 715, 903,
                721, 270, 870, 229, 682, 68, 936, 74, 996, 423, 709, 154, 221,
                250, 479, 586, 145, 545, 306, 451, 818, 587, 486, 400, 707,
                462, 563, 164, 789, 630, 420, 862, 252, 290, 443, 935, 358,
                732, 9, 355, 155, 718, 861, 729, 321, 692, 315, 466, 237, 973,
                270, 56, 560, 108, 808, 619, 571, 723, 136, 712, 354, 556, 927,
                958, 846, 370, 893, 557, 454, 255, 264, 610, 325, 477, 339,
                998, 170, 6, 817, 759, 980, 87, 815, 892, 547, 976, 864, 470,
                51, 0, 183, 405, 908, 462, 716, 754, 184, 961, 663, 639, 216,
                927, 249, 894, 405, 940, 892, 927, 298, 709, 686, 630, 148,
                854, 523, 696, 830, 387, 166, 881, 739, 701, 639, 647, 163,
                707, 401, 348, 668, 417, 987, 237, 344, 588, 131, 101, 880,
                375, 28, 178, 85, 67, 161, 233, 921, 684, 929, 103, 423, 448,
                984, 162, 149, 975, 809, 665, 682, 562, 13, 703, 979, 352, 940,
                676, 940, 423, 777, 172, 798, 158, 702, 883, 225, 863, 469,
                498, 899, 750, 601, 322, 198, 937, 484, 348, 265, 293, 365,
                299, 856, 378, 2, 187, 82, 294, 863, 374, 717, 993, 546, 516,
                151, 248, 751, 728, 464, 220, 578, 363, 971, 179, 686, 169,
                116, 522, 869, 381, 168, 234, 681, 376, 964, 35, 563, 46, 330,
                427, 420, 47, 420, 318, 915, 923, 919, 667, 3, 383, 239, 581,
                98, 562, 760, 136, 732, 228, 659, 953, 962, 827, 540, 995, 203,
                856, 30, 118, 903, 712, 545, 675, 112, 317, 994, 27, 240, 913,
                46, 243, 648, 638, 824, 746, 200, 936, 883, 284, 165, 894, 590,
                127, 721, 130, 474, 276, 986, 504, 394, 241, 217, 292, 269,
                329, 609, 263, 708, 202, 528, 107, 797, 176, 745, 974, 274,
                945, 910, 157, 582, 427, 403, 172, 906, 124, 302, 380, 752,
                640, 885, 499, 234, 454, 791, 503, 135, 752, 118, 843, 954,
                646, 302, 104, 174, 47, 78, 800, 345, 988, 310, 927, 416, 713,
                99, 322, 838, 753, 55, 942, 745, 940, 441, 979, 746, 584, 482,
                881, 337, 952, 76, 643, 598, 379, 747, 124, 778, 825, 925, 123,
                166, 235, 402, 934, 948, 853, 608, 138, 606, 663, 81, 704, 955,
                874, 683, 701, 459, 518, 934, 148, 470, 363, 791, 421, 94, 891,
                545, 872, 68, 822, 348, 234, 57, 102, 168, 358, 956, 129, 496,
                914, 792, 929, 618, 748, 804, 654, 801, 263, 524, 736, 411,
                994, 451, 554, 767, 545, 797, 313, 769, 866, 487, 117, 452,
                545, 572, 973, 903, 528, 102, 751, 442, 246, 681, 413, 994,
                485, 67, 148, 100, 591, 236, 863, 937, 687, 417, 705, 232, 567,
                370, 353, 433, 857, 823, 237, 754, 395, 210, 9, 923, 664, 113,
                717, 911, 794, 482, 257, 631, 549, 405, 83, 492, 641, 946, 782,
                328, 715, 839, 912, 282, 561, 266, 715, 418, 89, 305, 525, 484,
                515, 534, 759, 532, 999, 476, 443, 793, 959, 700, 776, 860,
                106, 859, 705, 99, 805, 839, 428, 873, 678, 692, 155, 239, 958,
                223, 9, 399, 528, 886, 235, 395, 773, 994, 927, 772, 823, 722,
                566, 134, 423, 694, 346, 881, 554, 403, 332, 711, 242, 760,
                584, 272, 805, 740, 863, 763, 315, 873, 515, 843, 759, 750,
                238, 884, 745, 518, 657, 568, 240, 575, 54, 15, 269, 400, 248,
                175, 804, 581, 887, 398, 693, 823, 671, 498, 915, 534, 262,
                230, 759, 129, 425, 871, 879, 664, 755, 624, 534, 412, 544,
                774, 987, 950, 790, 257, 351, 390, 784, 507, 971, 671, 905,
                665, 847, 928, 163, 762, 463, 777, 345, 574, 906, 770, 445,
                786, 786, 201, 762, 320, 965, 659, 95, 953, 609, 237, 562, 312,
                979, 346, 819, 951, 370, 77, 616, 569, 357, 131, 331, 820, 909,
                28, 747, 167, 799, 192, 953, 585, 745, 68, 906, 711, 727, 353,
                16, 688, 942, 930, 1, 921, 628, 172, 224, 350, 601, 192, 919,
                959, 324, 251, 131, 585, 279, 878, 752, 430, 423, 58, 16, 168,
                126, 274, 231, 205, 979, 247, 893, 921, 177, 246, 194, 158,
                419, 419, 508, 20, 963, 428, 331, 639, 31, 463, 224, 662, 341,
                329, 93, 764, 739, 461, 285, 217, 735, 516, 422, 714, 764, 667,
                987, 293, 914, 533, 451, 685, 304, 960, 57, 268, 740, 389, 907,
                771, 852, 484, 433, 545, 165, 878, 310, 904, 339, 947, 121,
                426, 463, 895, 492, 579, 914, 831, 873, 828, 365, 676, 865, 21,
                988, 923, 289, 728, 312, 549, 851, 516, 385, 637, 61, 550, 515,
                723, 806, 207, 670, 927, 985, 134, 174, 478, 713, 88, 309, 938,
                269, 26, 615, 134, 48, 955, 409, 689, 684, 721, 590, 887, 589,
                975, 524, 651, 877, 392, 726, 683, 599, 397, 962, 584, 883,
                136, 414, 948, 577, 724, 239, 846, 102, 206, 332, 150, 161,
                742, 192, 197, 815, 782, 85, 405, 758, 609, 408, 635, 353, 134,
                671, 952, 883, 633, 889, 118, 122, 655, 419, 699, 731, 658,
                897, 834, 216, 229, 336, 377, 323, 528, 927, 139, 311, 12, 896,
                69, 973, 304, 56, 679, 790, 727, 631, 674, 361, 872, 792, 483,
                528, 563, 534, 259, 221, 431, 445, 437, 12, 782, 167, 336, 310,
                94, 827, 621, 458, 723, 42, 783, 379, 99, 462, 169, 826, 446,
                843, 539, 670, 988, 374, 550, 551, 908, 162, 125, 691, 607,
                914, 704, 389, 81, 392, 52, 527, 571, 673, 337, 294, 716, 473,
                25, 167, 935, 194, 993, 733, 38, 885, 404, 378, 259, 306, 281,
                168, 468, 406, 211, 76, 321, 915, 817, 754, 659, 869, 634, 230,
                895, 323, 876, 611, 796, 253, 778, 84, 448, 123, 817, 838, 8,
                573, 216, 268, 880, 849, 788, 348, 256, 999, 776, 929, 267,
                594, 683, 278, 815, 669, 861, 710, 993, 89, 673, 789, 343, 803,
                225, 791, 927, 43, 981, 287, 968, 549, 907, 848, 398, 47, 549,
                654, 47, 325, 583, 666, 271, 619, 944, 439, 640, 805, 149, 633,
                895, 175, 775, 590, 978, 0, 381, 257, 395, 714, 545, 364, 263,
                804, 564, 661, 852, 113, 668, 899, 791, 603, 917, 414, 222,
                861, 205, 863, 19, 355, 848, 914, 530, 623, 856, 860, 976, 237,
                118, 371, 303, 15, 87, 566, 819, 652, 579, 671, 117, 247, 922,
                260, 851, 839, 27, 425, 53, 232, 640, 72, 587, 489, 338, 469,
                464, 194, 682, 440, 783, 800, 812, 86, 167, 899, 652, 986, 903,
                231, 10, 21, 831, 284, 281, 682, 476, 308, 107, 529, 893, 748,
                601, 832, 589, 939, 302, 53, 485, 336, 494, 268, 136, 658, 354,
                303, 909, 358, 641, 813, 941, 651, 186, 772, 288, 467, 454,
                764, 128, 914, 293, 21, 14, 246, 853, 603, 537, 507, 656, 22,
                843, 502, 290, 331, 160, 996, 986, 70, 706, 628, 235, 647, 631,
                421, 420, 919, 888, 226, 35, 368, 492, 328, 741, 506, 926, 947,
                461, 463, 806, 118, 485, 2, 972, 127, 685, 133, 475, 672, 555,
                181, 652, 790, 181, 635, 211, 953, 555, 451, 179, 942, 820, 24,
                271, 913, 530, 197, 212, 992, 13, 19, 462, 850, 373, 434, 330,
                58, 919, 805, 82, 474, 339, 734, 264, 872, 370, 475, 825, 277,
                927, 4, 219, 99, 380, 842, 364, 911, 392, 577, 255, 405, 948,
                69, 255, 321, 855, 585, 731, 775, 743, 814, 601, 434, 548, 866,
                306, 270, 693, 131, 547, 620, 487, 119, 71, 868, 961, 436, 131,
                705, 365, 738, 110, 313, 159, 366, 986, 14, 303, 717, 141, 398,
                883, 743, 832, 432, 961, 138, 54, 654, 621, 954, 627, 109, 73,
                698, 329, 386, 486, 812, 92, 851, 550, 554, 516, 709, 920, 502,
                75, 576, 572, 217, 974, 455, 312, 807, 239, 273, 297, 646, 927,
                919, 600, 906, 380, 25, 957, 61, 763, 443, 873, 207, 647, 423,
                762, 163, 484, 34, 18, 559, 610, 942, 128, 937, 749, 440, 96,
                341, 65, 393, 987, 993, 664, 587, 251, 396, 964, 208, 457, 727,
                652, 330, 935, 651, 105, 697, 166, 589, 731, 536, 501, 694,
                478, 981, 631, 580, 422, 727, 921, 839, 472, 908, 832, 137,
                847, 84, 533, 811, 644, 991, 538, 296, 673, 825, 299, 779, 522,
                466, 720, 606, 2, 221, 300, 833, 203, 283, 413, 977, 362, 334,
                816, 834, 594, 1, 323, 441, 437, 209, 604, 81, 552, 142, 730,
                225, 968, 29, 4, 842, 847, 77, 448, 850, 298, 100, 35, 853,
                735, 448, 182, 97, 134, 351, 284, 728, 704, 959, 521, 493, 168,
                125, 926, 720, 619, 8, 946, 939, 390, 302, 782, 237, 731, 582,
                439, 30, 35, 474, 235, 770, 922, 770, 220, 408, 473, 856, 136,
                529, 815, 9, 374, 984, 486, 300, 704, 106, 661, 2, 45, 51, 657,
                179, 640, 388, 114, 80, 770, 149, 554, 358, 271, 829, 480, 843,
                237, 953, 699, 726, 834, 515, 735, 208, 851, 222, 508, 555,
                680, 521, 910, 77, 572, 919, 609, 213, 307, 723, 293, 430, 872,
                199, 788, 495, 28, 268, 339, 618, 573, 38, 344, 407, 905, 431,
                615, 756, 5, 475, 664, 685, 997, 574, 115, 921, 493, 724, 134,
                152, 447, 779, 582, 671, 331, 370, 518, 359, 990, 857, 329,
                563, 248, 673, 322, 153, 105, 289, 262, 462, 765, 926, 500,
                114, 852, 615, 35, 345, 691, 522, 849, 490, 653, 432, 513, 984,
                154, 31, 696, 145, 889, 25, 60, 489, 51, 383, 642, 508, 672,
                904, 970, 789, 182, 470, 255, 34, 437, 643, 731, 128, 165, 581,
                618, 170, 13, 483, 155, 519, 515, 203, 664, 756, 228, 77, 245,
                631, 812, 239, 139, 836, 496, 110, 978, 678, 932, 233, 713,
                722, 876, 796, 850, 41, 377, 821, 564, 742, 304, 719, 262, 171,
                274, 278, 927, 502, 355, 524, 486, 519, 764, 625, 356, 612, 87,
                334, 642, 20, 567, 707, 742, 444, 504, 944, 837, 881, 117, 401,
                624, 774, 472, 238, 945, 746, 516, 225, 601, 224, 749, 87, 743,
                513, 64, 99, 477, 152, 785, 120, 524, 705, 827, 266, 501, 331,
                562, 338, 213, 32, 92, 189, 806, 916, 427, 103, 15, 295, 328,
                968, 519, 78, 407, 263, 943, 471, 714, 421, 623, 852, 541, 147,
                557, 368, 765, 58, 700, 680, 748, 265, 712, 192, 454, 870, 109,
                233, 973, 476, 528, 302, 444, 48, 380, 851, 663, 323, 674, 729,
                744, 650, 581, 637, 149, 490, 6, 267, 548, 58, 947, 297, 323,
                11, 841, 129, 881, 950, 362, 206, 778, 890, 508, 222, 290, 240,
                425, 305, 916, 100, 387, 660, 102, 320, 298, 251, 811, 656,
                518, 711, 714, 817, 360, 37, 828, 202, 518, 61, 504, 880, 268,
                283, 122, 128, 857, 765, 369, 283, 422, 637, 735, 809, 297,
                189, 482, 947, 440, 645, 955, 959, 356, 669, 776, 69, 58, 957,
                271, 576, 18, 127, 808, 638, 410, 931, 119, 268, 48, 840, 903,
                470, 477, 990, 632, 126, 179, 114, 426, 971, 759, 381, 930,
                467, 403, 59, 536, 813, 16, 159, 742, 386, 287, 550, 377, 49,
                833, 496, 317, 881, 688, 572, 352, 165, 914, 336, 291, 445,
                450, 69, 417, 561, 451, 699, 380, 206, 110, 917, 19, 478, 428,
                761, 217, 715, 664, 594, 765, 497, 442, 434, 379, 130, 359, 83,
                647, 625, 419, 290, 423, 221, 360, 192, 134, 163, 891, 514,
                369, 2, 783, 740, 832, 564, 854, 49, 279, 518, 643, 396, 15,
                437, 183, 746, 919, 894, 829, 566, 519, 600, 857, 294, 173,
                217, 486, 307, 380, 378, 174, 101, 732, 309, 841, 916, 873,
                695, 966, 505, 213, 961, 253, 229, 399, 788, 975, 318, 682,
                157, 885, 554, 109, 742, 848, 283, 311, 335, 942, 691, 65, 468,
                792, 149, 778, 985, 65, 3, 681, 31, 860, 894, 345, 466, 475,
                744, 254, 803, 62, 289, 312, 299, 843, 421, 393, 43, 56, 704,
                730, 999, 747, 147, 467, 891, 648, 597, 877, 714, 953, 558, 97,
                813, 804, 442, 279, 632, 538, 534, 787, 953, 823, 99, 252, 18,
                872, 998, 413, 929, 702, 496, 280, 802, 643, 747, 693, 292,
                697, 570, 358, 650, 128, 807, 463, 285, 602, 95, 917, 140, 629,
                704, 445, 804, 155, 50, 174, 27, 48, 939, 308, 750, 435, 588,
                904, 431, 688, 598, 723, 385, 168, 433, 35, 649, 592, 850, 934,
                194, 945, 203, 687, 926, 907, 132, 730, 414, 182, 256, 793,
                582, 196, 102, 685, 983, 690, 589, 414, 378, 187, 489, 115,
                356, 922, 150, 357, 867, 1, 291, 61, 946, 494, 100, 873, 753,
                585, 955, 167, 119, 564, 312, 702, 760, 414, 387, 95, 457, 976,
                510, 187, 516, 999, 303, 224, 274, 453, 581, 141, 806, 872,
                554, 105, 718, 655, 978, 471, 592, 285, 990, 711, 849, 302,
                765, 961, 69, 504, 57, 526, 833, 567, 713, 349, 918, 368, 573,
                192, 174, 154, 333, 980, 378, 888, 85, 96, 895, 415, 919, 487,
                701, 261, 550, 902, 915, 668, 216, 984, 172, 273, 862, 5, 192,
                928, 706, 462, 296, 279, 655, 470, 785, 340, 451, 163, 580,
                888, 611, 827, 304, 882, 314, 357, 143, 217, 611, 59, 237, 827,
                395, 409, 100, 258, 767, 644, 186, 473, 107, 482, 105, 114,
                305, 890, 806, 756, 406, 387, 996, 17, 214, 300, 900, 881, 9,
                43, 450, 621, 454, 687, 448, 850, 96, 901, 460, 215, 897, 646,
                689, 356, 480, 794, 470, 785, 36, 277, 893, 442, 16, 890, 460,
                230, 542, 712, 111, 904, 107, 913, 525, 562, 600, 973, 764, 49,
                226, 224, 264, 124, 222, 953, 480, 54, 99, 303, 192, 136, 580,
                437, 578, 948, 679, 390, 178, 222, 102, 642, 478, 210, 555, 3,
                772, 156, 328, 888, 557, 907, 464, 821, 31, 38, 775, 863, 444,
                226, 166, 636, 362, 98, 74, 293, 46, 753, 683, 577, 327, 786,
                219, 157, 996, 126, 160, 120, 634, 841, 360, 191, 748, 824, 13,
                131, 862, 140, 994, 306, 718, 513, 295, 81, 611, 721, 726, 10,
                826, 409, 587, 506, 547, 158, 663, 543, 284, 824, 15, 919, 17,
                375, 462, 765, 199, 475, 896, 413, 967, 242, 72, 686, 755, 367,
                119, 367, 440, 845, 729, 266, 606, 316, 772, 154, 474, 436,
                697, 110, 612, 65, 29, 629, 440, 844, 746, 992, 319, 994, 405,
                639, 236, 829, 677, 992, 548, 796, 711, 988, 993, 440, 255,
                599, 108, 27, 105, 934, 815, 155, 44, 427, 220, 74, 408, 660,
                918, 154, 652, 589, 148, 410, 580, 737, 239, 257, 729, 788,
                405, 792, 776, 750, 584, 383, 702, 692, 763, 807, 626, 578,
                962, 670, 358, 182, 96, 766, 195, 366, 273, 199, 308, 421, 609,
                240, 158, 201, 850, 239, 341, 255, 31, 469, 6, 967, 853, 60,
                659, 616, 867, 637, 546, 182, 660, 904, 364, 108, 671, 911,
                475, 944, 111, 135, 717, 72, 375, 228, 273, 225, 819, 614, 833,
                203, 84, 191, 170, 289, 251, 830, 905, 470, 819, 803, 652, 479,
                708, 369, 588, 731, 280, 415, 27, 743, 902, 744, 816, 277, 324,
                441, 855, 144, 56, 40, 347, 492, 583, 869, 781, 834, 51, 38,
                656, 871, 841, 309, 350, 549, 678, 290, 632, 310, 705, 659,
                406, 607, 756, 222, 237, 80, 15, 444, 576, 423, 484, 275, 915,
                419, 145, 48, 253, 196, 86, 909, 67, 280, 570, 770, 181, 600,
                60, 814, 263, 118, 473, 669, 725, 229, 243, 314, 662, 258, 758,
                238, 682, 594, 514, 597, 13, 659, 998, 618, 207, 436, 880, 275,
                716, 802, 45, 250, 403, 457, 64, 666, 575, 889, 335, 301, 471,
                930, 967, 133, 188, 726, 723, 870, 672, 237, 820, 38, 248, 818,
                656, 456, 606, 536, 83, 323, 339, 128, 925, 94, 937, 989, 112,
                513, 230, 799, 166, 701, 729, 133, 186, 917, 211, 910, 788,
                884, 499, 960, 922, 748, 130, 930, 556, 736, 819, 639, 411,
                510, 119, 336, 604, 56, 677, 716, 569, 908, 515, 87, 961, 244,
                221, 500, 513, 784, 410, 653, 20, 909, 613, 294, 9, 743, 225,
                565, 480, 44, 204, 891, 906, 323, 580, 510, 732, 257, 578, 653,
                517, 445, 741, 479, 41, 314, 979, 554, 98, 741, 208, 471, 2,
                173, 765, 12, 917, 990, 577, 749, 386, 134, 992, 292, 809, 572,
                154, 541, 830, 84, 195, 347, 529, 288, 178, 570, 602, 509, 477,
                52, 250, 685, 523, 253, 858, 641, 265, 127, 631, 194, 876, 370,
                680, 869, 14, 490, 441, 169, 383, 623, 253, 930, 971, 135, 218,
                149, 705, 820, 659, 534, 225, 261, 219, 100, 514, 430, 741,
                131, 909, 373, 678, 138, 95, 358, 7, 109, 200, 800, 630, 936,
                424, 236, 866, 747, 371, 85, 248, 428, 257, 259, 963, 482, 521,
                534, 583, 387, 316, 324, 871, 226, 49, 549, 364, 496, 259, 723,
                958, 812, 875, 588, 748, 651, 176, 614, 398, 547, 51, 999, 328,
                309, 258, 291, 143, 131, 825, 726, 871, 494, 403, 94, 72, 804,
                995, 436, 301, 254, 511, 611, 418, 738, 199, 518, 390, 376,
                133, 140, 275, 184, 139, 603, 845, 750, 246, 989, 233, 424, 67,
                456, 918, 470, 550, 990, 627, 545, 778, 280, 152, 641, 891,
                570, 379, 90, 89, 121, 818, 574, 262, 446, 110, 753, 401, 956,
                855, 648, 945, 441, 424, 12, 249, 694, 835, 800, 684, 462, 697,
                814, 742, 849, 807, 633, 772, 538, 75, 213, 660, 246, 787, 274,
                44, 249, 379, 445, 205, 587, 445, 502, 380, 869, 867, 629, 563,
                54, 429, 599, 868, 479, 765, 610, 328, 572, 595, 452, 463, 22,
                665, 123, 620, 804, 749, 664, 54, 480, 110, 611, 67, 907, 466,
                447, 129, 685, 77, 692, 739, 858, 644, 607, 337, 761, 569, 18,
                686, 516, 470, 149, 538, 136, 624, 159, 292, 373, 175, 698,
                853, 285, 310, 273, 545, 128, 720, 674, 165, 149, 718, 904, 8,
                714, 863, 345, 476, 784, 715, 162, 300, 186, 311, 190, 674,
                287, 701, 966, 660, 877, 665, 865, 514, 327, 138, 59, 807, 211,
                733, 972, 360, 804, 876, 720, 518, 91, 418, 994, 875, 133, 508,
                175, 319, 819, 717, 993, 458, 419, 312, 470, 296, 977, 336,
                810, 656, 826, 870, 463, 389, 955, 435, 750, 759, 311, 470,
                630, 754, 888, 624, 629, 374, 133, 156, 693, 304, 873, 39, 763,
                292, 351, 233, 940, 680, 921, 751, 336, 100, 973, 799, 489,
                280, 234, 239, 392, 545, 62, 22, 299, 302, 998, 280, 676, 483,
                436, 722, 788, 309, 761, 903, 954, 464, 488, 894, 144, 410,
                997, 480, 510, 970, 279, 351, 603, 513, 591, 995, 410, 5, 369,
                61, 659, 367, 341, 688, 851, 129, 410, 991, 438, 523, 894, 744,
                987, 382, 639, 131, 144, 988, 611, 6, 311, 242, 358, 914, 755,
                301, 261, 517, 306, 630, 578, 317, 349, 919, 5, 552, 48, 415,
                543, 838, 290, 789, 935, 277, 524, 926, 760, 668, 914, 371,
                675, 225, 965, 33, 491, 72, 686, 752, 589, 992, 734, 167, 661,
                436, 438, 667, 988, 838, 434, 884, 29, 725, 673, 964, 354, 197,
                242, 115, 218, 156, 838, 893, 734, 804, 278, 225, 876, 964,
                330, 466, 308, 416, 985, 969, 852, 776, 988, 841, 614, 775,
                725, 995, 500, 750, 311, 854, 948, 553, 969, 166, 62, 808, 411,
                796, 964, 41, 373, 840, 357, 703, 658, 17, 120, 996, 338, 324,
                772, 327, 165, 738, 102, 242, 86, 954, 993, 397, 160, 293, 303,
                130, 459, 365, 290, 222, 513, 606, 615, 886, 446, 972, 942,
                457, 989, 414, 453, 327, 738, 577, 6, 904, 315, 460, 498, 401,
                414, 491, 151, 575, 784, 454, 57, 595, 819, 699, 169, 332, 305,
                784, 570, 103, 108, 512, 560, 449, 926, 365, 777, 665, 942,
                135, 921, 610, 596, 419, 11, 362, 911, 514, 289, 47, 968, 698,
                643, 787, 397, 164, 471, 54, 949, 42, 158, 57, 906, 70, 507,
                833, 788, 636, 850, 730, 123, 123, 692, 71, 542, 56, 434, 805,
                570, 75, 853, 539, 774, 848, 678, 171, 12, 150, 578, 313, 544,
                736, 723, 802, 158, 230, 987, 946, 218, 837, 29, 693, 960, 721,
                765, 855, 777, 199, 660, 348, 274, 865, 239, 400, 713, 917,
                924, 78, 419, 502, 391, 315, 590, 114, 118, 748, 696, 105, 47,
                266, 295, 428, 960, 255, 149, 725, 110, 279, 924, 123, 979,
                550, 988, 218, 951, 702, 135, 875, 780, 907, 729, 523, 222,
                319, 638, 340, 419, 686, 798, 466, 953, 93, 894, 913, 700, 396,
                638, 163, 675, 914, 286, 654, 816, 274, 224, 119, 328, 359,
                994, 460, 618, 75, 984, 841, 394, 974, 533, 166, 660, 331, 984,
                613, 776, 879, 526, 477, 627, 516, 992, 654, 430, 278, 660,
                599, 904, 884, 718, 233, 595, 65, 45, 214, 140, 29, 407, 887,
                3, 940, 53, 16, 624, 37, 629, 752, 268, 508, 581, 895, 376,
                573, 901, 807, 851, 561, 406, 756, 445, 124, 341, 393, 541,
                386, 607, 682, 768, 14, 569, 123, 306, 622, 139, 282, 11, 121,
                35, 280, 981, 616, 527, 357, 190, 429, 164, 393, 342, 922, 149,
                788, 399, 842, 181, 940, 229, 140, 974, 997, 506, 543, 120,
                812, 517, 612, 95, 881, 733, 130, 161, 714, 746, 40, 71, 288,
                469, 588, 682, 164, 862, 183, 952, 613, 26, 485, 906, 607, 977,
                880, 604, 483, 776, 76, 295, 645, 40, 742, 526, 125, 872, 39,
                839, 971, 80, 263, 611, 901, 203, 293, 65, 417, 829, 369, 383,
                855, 206, 289, 462, 183, 521, 418, 18, 649, 846, 314, 295, 887,
                408, 173, 12, 633, 213, 204, 604, 645, 819, 567, 898, 374, 213,
                316, 143, 42, 685, 526, 897, 244, 815, 711, 427, 689, 481, 446,
                338, 327, 112, 633, 566, 520, 159, 931, 153, 724, 487, 109,
                721, 306, 677, 619, 32, 242, 935, 175, 284, 973, 54, 181, 217,
                869, 244, 996, 910, 725, 442, 249, 52, 906, 234, 971, 779, 393,
                902, 932, 469, 389, 394, 190, 47, 423, 810, 431, 665, 97, 958,
                949, 70, 12, 482, 639, 234, 726, 636, 144, 451, 430, 393, 855,
                337, 628, 826, 116, 373, 80, 400, 843, 469, 794, 33, 868, 569,
                195, 299, 234, 293, 258, 183, 715, 622, 17, 355, 856, 743, 991,
                1, 546, 421, 394, 402, 110, 374, 228, 226, 748, 309, 979, 943,
                130, 773, 976, 351, 695, 524, 2, 929, 817, 612, 465, 884, 235,
                482, 239, 91, 226, 582, 92, 772, 4, 839, 526, 466, 213, 107,
                45, 313, 768, 24, 256, 250, 149, 585, 601, 844, 109, 604, 774,
                278, 216, 239, 162, 803, 73, 402, 895, 299, 984, 339, 424, 340,
                178, 302, 159, 744, 409, 204, 57, 177, 228, 666, 428, 729, 251,
                381, 574, 360, 985, 700, 990, 554, 291, 152, 357, 364, 906,
                604, 16, 243, 944, 792, 583, 474, 94, 94, 570, 504, 298, 980,
                33, 526, 646, 813, 608, 249, 195, 182, 961, 532, 882, 951, 438,
                525, 103, 796, 889, 10, 752, 905, 253, 696, 49, 188, 523, 144,
                635, 93, 0, 933, 425, 385, 812, 71, 551, 420, 320, 746, 602,
                281, 630, 836, 584, 69, 361, 688, 217, 602, 50, 969, 860, 655,
                18, 909, 195, 541, 405, 830, 986, 757, 764, 412, 143, 928, 835,
                694, 348, 508, 792, 302, 141, 422, 490, 726, 491, 851, 766,
                708, 805, 816, 30, 665, 823, 48, 927, 370, 941, 332, 201, 279,
                90, 317, 43, 585, 245, 879, 279, 945, 387, 71, 247, 880, 845,
                737, 606, 689, 940, 372, 749, 97, 540, 779, 115, 363, 179, 42,
                86, 120, 374, 287, 400, 816, 956, 443, 401, 553, 674, 32, 498,
                413, 455, 97, 294, 301, 186, 900, 990, 478, 625, 91, 575, 165,
                871, 690, 881, 50, 732, 967, 523, 459, 606, 923, 627, 914, 718,
                29, 467, 393, 413, 317, 158, 869, 766, 452
            ]
        ]
        right_answer_list = [49, 4913370]

        for test_data, right_answer in zip(test_data_list, right_answer_list):
            s = Solution()
            my_answer = s.maxArea(height=test_data)
            self.assertEqual(my_answer, right_answer)