Skip to main content

Three Sums

from unittest import TestCase


def threeSum_old(nums):
result = []
for i in range(len(nums)):
for j in range(i + 1, len(nums)):
for k in range(j + 1, len(nums)):
if nums[i] + nums[j] + nums[k] == 0:
new_list = sorted([nums[i], nums[j], nums[k]])
if new_list not in result:
result.append(new_list)
return result


def threeSum(nums):
result = []
if len(nums) < 3:
return []
nums = sorted(nums)
first_positive_index = find_index_of_first_positive(nums)

print("+ve index", first_positive_index, nums[first_positive_index])
for i in range(first_positive_index):
for j in range(i + 1, first_positive_index):
sum_two = nums[i] + nums[j]
if -sum_two in nums[first_positive_index:]:
print("Can", sorted([nums[i], nums[j], nums[nums.index(-sum_two)]]))
new_list = sorted([nums[i], nums[j], nums[nums.index(-sum_two)]])
if new_list not in result:
result.append(new_list)
else:
print("already added")
else:
print("not in list")
print("result", result)
return result


def find_index_of_first_positive(n, start=0, end=None):
s = start
e = len(n) if end is None else end
mid = int((s + e) / 2)
if mid >= e:
return mid
elif n[mid] < 0:
return find_index_of_first_positive(n, mid + 1, e)
else:
return find_index_of_first_positive(n, s, mid)


print(threeSum([-2, 0, 1, 1, 2]))
print("-=-=-=-")
print(threeSum([-1, 0, 1, 2, -1, -4]))

list = [
82597,
-9243,
62390,
83030,
-97960,
-26521,
-61011,
83390,
-38677,
12333,
75987,
46091,
83794,
19355,
-71037,
-6242,
-28801,
324,
1202,
-90885,
-2989,
-95597,
-34333,
35528,
5680,
89093,
-90606,
50360,
-29393,
-27012,
53313,
65213,
99818,
-82405,
-41661,
-3333,
-51952,
72135,
-1523,
26377,
74685,
96992,
92263,
15929,
5467,
-99555,
-43348,
-41689,
-60383,
-3990,
32165,
65265,
-72973,
-58372,
12741,
-48568,
-46596,
72419,
-1859,
34153,
62937,
81310,
-61823,
-96770,
-54944,
8845,
-91184,
24208,
-29078,
31495,
65258,
14198,
85395,
70506,
-40908,
56740,
-12228,
-40072,
32429,
93001,
68445,
-73927,
25731,
-91859,
-24150,
10093,
-60271,
-81683,
-18126,
51055,
48189,
-6468,
25057,
81194,
-58628,
74042,
66158,
-14452,
-49851,
-43667,
11092,
39189,
-17025,
-79173,
13606,
83172,
92647,
-59741,
19343,
-26644,
-57607,
82908,
-20655,
1637,
80060,
98994,
39331,
-31274,
-61523,
91225,
-72953,
13211,
-75116,
-98421,
-41571,
-69074,
99587,
39345,
42151,
-2460,
98236,
15690,
-52507,
-95803,
-48935,
-46492,
-45606,
-79254,
-99851,
52533,
73486,
39948,
-7240,
71815,
-585,
-96252,
90990,
-93815,
93340,
-71848,
58733,
-14859,
-83082,
-75794,
-82082,
-24871,
-15206,
91207,
-56469,
-93618,
67131,
-8682,
75719,
87429,
-98757,
-7535,
-24890,
-94160,
85003,
33928,
75538,
97456,
-66424,
-60074,
-8527,
-28697,
-22308,
2246,
-70134,
-82319,
-10184,
87081,
-34949,
-28645,
-47352,
-83966,
-60418,
-15293,
-53067,
-25921,
55172,
75064,
95859,
48049,
34311,
-86931,
-38586,
33686,
-36714,
96922,
76713,
-22165,
-80585,
-34503,
-44516,
39217,
-28457,
47227,
-94036,
43457,
24626,
-87359,
26898,
-70819,
30528,
-32397,
-69486,
84912,
-1187,
-98986,
-32958,
4280,
-79129,
-65604,
9344,
58964,
50584,
71128,
-55480,
24986,
15086,
-62360,
-42977,
-49482,
-77256,
-36895,
-74818,
20,
3063,
-49426,
28152,
-97329,
6086,
86035,
-88743,
35241,
44249,
19927,
-10660,
89404,
24179,
-26621,
-6511,
57745,
-28750,
96340,
-97160,
-97822,
-49979,
52307,
79462,
94273,
-24808,
77104,
9255,
-83057,
77655,
21361,
55956,
-9096,
48599,
-40490,
-55107,
2689,
29608,
20497,
66834,
-34678,
23553,
-81400,
-66630,
-96321,
-34499,
-12957,
-20564,
25610,
-4322,
-58462,
20801,
53700,
71527,
24669,
-54534,
57879,
-3221,
33636,
3900,
97832,
-27688,
-98715,
5992,
24520,
-55401,
-57613,
-69926,
57377,
-77610,
20123,
52174,
860,
60429,
-91994,
-62403,
-6218,
-90610,
-37263,
-15052,
62069,
-96465,
44254,
89892,
-3406,
19121,
-41842,
-87783,
-64125,
-56120,
73904,
-22797,
-58118,
-4866,
5356,
75318,
46119,
21276,
-19246,
-9241,
-97425,
57333,
-15802,
93149,
25689,
-5532,
95716,
39209,
-87672,
-29470,
-16324,
-15331,
27632,
-39454,
56530,
-16000,
29853,
46475,
78242,
-46602,
83192,
-73440,
-15816,
50964,
-36601,
89758,
38375,
-40007,
-36675,
-94030,
67576,
46811,
-64919,
45595,
76530,
40398,
35845,
41791,
67697,
-30439,
-82944,
63115,
33447,
-36046,
-50122,
-34789,
43003,
-78947,
-38763,
-89210,
32756,
-20389,
-31358,
-90526,
-81607,
88741,
86643,
98422,
47389,
-75189,
13091,
95993,
-15501,
94260,
-25584,
-1483,
-67261,
-70753,
25160,
89614,
-90620,
-48542,
83889,
-12388,
-9642,
-37043,
-67663,
28794,
-8801,
13621,
12241,
55379,
84290,
21692,
-95906,
-85617,
-17341,
-63767,
80183,
-4942,
-51478,
30997,
-13658,
8838,
17452,
-82869,
-39897,
68449,
31964,
98158,
-49489,
62283,
-62209,
-92792,
-59342,
55146,
-38533,
20496,
62667,
62593,
36095,
-12470,
5453,
-50451,
74716,
-17902,
3302,
-16760,
-71642,
-34819,
96459,
-72860,
21638,
47342,
-69897,
-40180,
44466,
76496,
84659,
13848,
-91600,
-90887,
-63742,
-2156,
-84981,
-99280,
94326,
-33854,
92029,
-50811,
98711,
-36459,
-75555,
79110,
-88164,
-97397,
-84217,
97457,
64387,
30513,
-53190,
-83215,
252,
2344,
-27177,
-92945,
-89010,
82662,
-11670,
86069,
53417,
42702,
97082,
3695,
-14530,
-46334,
17910,
77999,
28009,
-12374,
15498,
-46941,
97088,
-35030,
95040,
92095,
-59469,
-24761,
46491,
67357,
-66658,
37446,
-65130,
-50416,
99197,
30925,
27308,
54122,
-44719,
12582,
-99525,
-38446,
-69050,
-22352,
94757,
-56062,
33684,
-40199,
-46399,
96842,
-50881,
-22380,
-65021,
40582,
53623,
-76034,
77018,
-97074,
-84838,
-22953,
-74205,
79715,
-33920,
-35794,
-91369,
73421,
-82492,
63680,
-14915,
-33295,
37145,
76852,
-69442,
60125,
-74166,
74308,
-1900,
-30195,
-16267,
-60781,
-27760,
5852,
38917,
25742,
-3765,
49097,
-63541,
98612,
-92865,
-30248,
9612,
-8798,
53262,
95781,
-42278,
-36529,
7252,
-27394,
-5021,
59178,
80934,
-48480,
-75131,
-54439,
-19145,
-48140,
98457,
-6601,
-51616,
-89730,
78028,
32083,
-48904,
16822,
-81153,
-8832,
48720,
-80728,
-45133,
-86647,
-4259,
-40453,
2590,
28613,
50523,
-4105,
-27790,
-74579,
-17223,
63721,
33489,
-47921,
97628,
-97691,
-14782,
-65644,
18008,
-93651,
-71266,
80990,
-76732,
-47104,
35368,
28632,
59818,
-86269,
-89753,
34557,
-92230,
-5933,
-3487,
-73557,
-13174,
-43981,
-43630,
-55171,
30254,
-83710,
-99583,
-13500,
71787,
5017,
-25117,
-78586,
86941,
-3251,
-23867,
-36315,
75973,
86272,
-45575,
77462,
-98836,
-10859,
70168,
-32971,
-38739,
-12761,
93410,
14014,
-30706,
-77356,
-85965,
-62316,
63918,
-59914,
-64088,
1591,
-10957,
38004,
15129,
-83602,
-51791,
34381,
-89382,
-26056,
8942,
5465,
71458,
-73805,
-87445,
-19921,
-80784,
69150,
-34168,
28301,
-68955,
18041,
6059,
82342,
9947,
39795,
44047,
-57313,
48569,
81936,
-2863,
-80932,
32976,
-86454,
-84207,
33033,
32867,
9104,
-16580,
-25727,
80157,
-70169,
53741,
86522,
84651,
68480,
84018,
61932,
7332,
-61322,
-69663,
76370,
41206,
12326,
-34689,
17016,
82975,
-23386,
39417,
72793,
44774,
-96259,
3213,
79952,
29265,
-61492,
-49337,
14162,
65886,
3342,
-41622,
-62659,
-90402,
-24751,
88511,
54739,
-21383,
-40161,
-96610,
-24944,
-602,
-76842,
-21856,
69964,
43994,
-15121,
-85530,
12718,
13170,
-13547,
69222,
62417,
-75305,
-81446,
-38786,
-52075,
-23110,
97681,
-82800,
-53178,
11474,
35857,
94197,
-58148,
-23689,
32506,
92154,
-64536,
-73930,
-77138,
97446,
-83459,
70963,
22452,
68472,
-3728,
-25059,
-49405,
95129,
-6167,
12808,
99918,
30113,
-12641,
-26665,
86362,
-33505,
50661,
26714,
33701,
89012,
-91540,
40517,
-12716,
-57185,
-87230,
29914,
-59560,
13200,
-72723,
58272,
23913,
-45586,
-96593,
-26265,
-2141,
31087,
81399,
92511,
-34049,
20577,
2803,
26003,
8940,
42117,
40887,
-82715,
38269,
40969,
-50022,
72088,
21291,
-67280,
-16523,
90535,
18669,
94342,
-39568,
-88080,
-99486,
-20716,
23108,
-28037,
63342,
36863,
-29420,
-44016,
75135,
73415,
16059,
-4899,
86893,
43136,
-7041,
33483,
-67612,
25327,
40830,
6184,
61805,
4247,
81119,
-22854,
-26104,
-63466,
63093,
-63685,
60369,
51023,
51644,
-16350,
74438,
-83514,
99083,
10079,
-58451,
-79621,
48471,
67131,
-86940,
99093,
11855,
-22272,
-67683,
-44371,
9541,
18123,
37766,
-70922,
80385,
-57513,
-76021,
-47890,
36154,
72935,
84387,
-92681,
-88303,
-7810,
59902,
-90,
-64704,
-28396,
-66403,
8860,
13343,
33882,
85680,
7228,
28160,
-14003,
54369,
-58893,
92606,
-63492,
-10101,
64714,
58486,
29948,
-44679,
-22763,
10151,
-56695,
4031,
-18242,
-36232,
86168,
-14263,
9883,
47124,
47271,
92761,
-24958,
-73263,
-79661,
-69147,
-18874,
29546,
-92588,
-85771,
26451,
-86650,
-43306,
-59094,
-47492,
-34821,
-91763,
-47670,
33537,
22843,
67417,
-759,
92159,
63075,
94065,
-26988,
55276,
65903,
30414,
-67129,
-99508,
-83092,
-91493,
-50426,
14349,
-83216,
-76090,
32742,
-5306,
-93310,
-60750,
-60620,
-45484,
-21108,
-58341,
-28048,
-52803,
69735,
78906,
81649,
32565,
-86804,
-83202,
-65688,
-1760,
89707,
93322,
-72750,
84134,
71900,
-37720,
19450,
-78018,
22001,
-23604,
26276,
-21498,
65892,
-72117,
-89834,
-23867,
55817,
-77963,
42518,
93123,
-83916,
63260,
-2243,
-97108,
85442,
-36775,
17984,
-58810,
99664,
-19082,
93075,
-69329,
87061,
79713,
16296,
70996,
13483,
-74582,
49900,
-27669,
-40562,
1209,
-20572,
34660,
83193,
75579,
7344,
64925,
88361,
60969,
3114,
44611,
-27445,
53049,
-16085,
-92851,
-53306,
13859,
-33532,
86622,
-75666,
-18159,
-98256,
51875,
-42251,
-27977,
-18080,
23772,
38160,
41779,
9147,
94175,
99905,
-85755,
62535,
-88412,
-52038,
-68171,
93255,
-44684,
-11242,
-104,
31796,
62346,
-54931,
-55790,
-70032,
46221,
56541,
-91947,
90592,
93503,
4071,
20646,
4856,
-63598,
15396,
-50708,
32138,
-85164,
38528,
-89959,
53852,
57915,
-42421,
-88916,
-75072,
67030,
-29066,
49542,
-71591,
61708,
-53985,
-43051,
28483,
46991,
-83216,
80991,
-46254,
-48716,
39356,
-8270,
-47763,
-34410,
874,
-1186,
-7049,
28846,
11276,
21960,
-13304,
-11433,
-4913,
55754,
79616,
70423,
-27523,
64803,
49277,
14906,
-97401,
-92390,
91075,
70736,
21971,
-3303,
55333,
-93996,
76538,
54603,
-75899,
98801,
46887,
35041,
48302,
-52318,
55439,
24574,
14079,
-24889,
83440,
14961,
34312,
-89260,
-22293,
-81271,
-2586,
-71059,
-10640,
-93095,
-5453,
-70041,
66543,
74012,
-11662,
-52477,
-37597,
-70919,
92971,
-17452,
-67306,
-80418,
7225,
-89296,
24296,
86547,
37154,
-10696,
74436,
-63959,
58860,
33590,
-88925,
-97814,
-83664,
85484,
-8385,
-50879,
57729,
-74728,
-87852,
-15524,
-91120,
22062,
28134,
80917,
32026,
49707,
-54252,
-44319,
-35139,
13777,
44660,
85274,
25043,
58781,
-89035,
-76274,
6364,
-63625,
72855,
43242,
-35033,
12820,
-27460,
77372,
-47578,
-61162,
-70758,
-1343,
-4159,
64935,
56024,
-2151,
43770,
19758,
-30186,
-86040,
24666,
-62332,
-67542,
73180,
-25821,
-27826,
-45504,
-36858,
-12041,
20017,
-24066,
-56625,
-52097,
-47239,
-90694,
8959,
7712,
-14258,
-5860,
55349,
61808,
-4423,
-93703,
64681,
-98641,
-25222,
46999,
-83831,
-54714,
19997,
-68477,
66073,
51801,
-66491,
52061,
-52866,
79907,
-39736,
-68331,
68937,
91464,
98892,
910,
93501,
31295,
-85873,
27036,
-57340,
50412,
21,
-2445,
29471,
71317,
82093,
-94823,
-54458,
-97410,
39560,
-7628,
66452,
39701,
54029,
37906,
46773,
58296,
60370,
-61090,
85501,
-86874,
71443,
-72702,
-72047,
14848,
34102,
77975,
-66294,
-36576,
31349,
52493,
-70833,
-80287,
94435,
39745,
-98291,
84524,
-18942,
10236,
93448,
50846,
94023,
-6939,
47999,
14740,
30165,
81048,
84935,
-19177,
-13594,
32289,
62628,
-90612,
-542,
-66627,
64255,
71199,
-83841,
-82943,
-73885,
8623,
-67214,
-9474,
-35249,
62254,
-14087,
-90969,
21515,
-83303,
94377,
-91619,
19956,
-98810,
96727,
-91939,
29119,
-85473,
-82153,
-69008,
44850,
74299,
-76459,
-86464,
8315,
-49912,
-28665,
59052,
-69708,
76024,
-92738,
50098,
18683,
-91438,
18096,
-19335,
35659,
91826,
15779,
-73070,
67873,
-12458,
-71440,
-46721,
54856,
97212,
-81875,
35805,
36952,
68498,
81627,
-34231,
81712,
27100,
-9741,
-82612,
18766,
-36392,
2759,
41728,
69743,
26825,
48355,
-17790,
17165,
56558,
3295,
-24375,
55669,
-16109,
24079,
73414,
48990,
-11931,
-78214,
90745,
19878,
35673,
-15317,
-89086,
94675,
-92513,
88410,
-93248,
-19475,
-74041,
-19165,
32329,
-26266,
-46828,
-18747,
45328,
8990,
-78219,
-25874,
-74801,
-44956,
-54577,
-29756,
-99822,
-35731,
-18348,
-68915,
-83518,
-53451,
95471,
-2954,
-13706,
-8763,
-21642,
-37210,
16814,
-60070,
-42743,
27697,
-36333,
-42362,
11576,
85742,
-82536,
68767,
-56103,
-63012,
71396,
-78464,
-68101,
-15917,
-11113,
-3596,
77626,
-60191,
-30585,
-73584,
6214,
-84303,
18403,
23618,
-15619,
-89755,
-59515,
-59103,
-74308,
-63725,
-29364,
-52376,
-96130,
70894,
-12609,
50845,
-2314,
42264,
-70825,
64481,
55752,
4460,
-68603,
-88701,
4713,
-50441,
-51333,
-77907,
97412,
-66616,
-49430,
60489,
-85262,
-97621,
-18980,
44727,
-69321,
-57730,
66287,
-92566,
-64427,
-14270,
11515,
-92612,
-87645,
61557,
24197,
-81923,
-39831,
-10301,
-23640,
-76219,
-68025,
92761,
-76493,
68554,
-77734,
-95620,
-11753,
-51700,
98234,
-68544,
-61838,
29467,
46603,
-18221,
-35441,
74537,
40327,
-58293,
75755,
-57301,
-7532,
-94163,
18179,
-14388,
-22258,
-46417,
-48285,
18242,
-77551,
82620,
250,
-20060,
-79568,
-77259,
82052,
-98897,
-75464,
48773,
-79040,
-11293,
45941,
-67876,
-69204,
-46477,
-46107,
792,
60546,
-34573,
-12879,
-94562,
20356,
-48004,
-62429,
96242,
40594,
2099,
99494,
25724,
-39394,
-2388,
-18563,
-56510,
-83570,
-29214,
3015,
74454,
74197,
76678,
-46597,
60630,
-76093,
37578,
-82045,
-24077,
62082,
-87787,
-74936,
58687,
12200,
-98952,
70155,
-77370,
21710,
-84625,
-60556,
-84128,
925,
65474,
-15741,
-94619,
88377,
89334,
44749,
22002,
-45750,
-93081,
-14600,
-83447,
46691,
85040,
-66447,
-80085,
56308,
44310,
24979,
-29694,
57991,
4675,
-71273,
-44508,
13615,
-54710,
23552,
-78253,
-34637,
50497,
68706,
81543,
-88408,
-21405,
6001,
-33834,
-21570,
-46692,
-25344,
20310,
71258,
-97680,
11721,
59977,
59247,
-48949,
98955,
-50276,
-80844,
-27935,
-76102,
55858,
-33492,
40680,
66691,
-33188,
8284,
64893,
-7528,
6019,
-85523,
8434,
-64366,
-56663,
26862,
30008,
-7611,
-12179,
-70076,
21426,
-11261,
-36864,
-61937,
-59677,
929,
-21052,
3848,
-20888,
-16065,
98995,
-32293,
-86121,
-54564,
77831,
68602,
74977,
31658,
40699,
29755,
98424,
80358,
-69337,
26339,
13213,
-46016,
-18331,
64713,
-46883,
-58451,
-70024,
-92393,
-4088,
70628,
-51185,
71164,
-75791,
-1636,
-29102,
-16929,
-87650,
-84589,
-24229,
-42137,
-15653,
94825,
13042,
88499,
-47100,
-90358,
-7180,
29754,
-65727,
-42659,
-85560,
-9037,
-52459,
20997,
-47425,
17318,
21122,
20472,
-23037,
65216,
-63625,
-7877,
-91907,
24100,
-72516,
22903,
-85247,
-8938,
73878,
54953,
87480,
-31466,
-99524,
35369,
-78376,
89984,
-15982,
94045,
-7269,
23319,
-80456,
-37653,
-76756,
2909,
81936,
54958,
-12393,
60560,
-84664,
-82413,
66941,
-26573,
-97532,
64460,
18593,
-85789,
-38820,
-92575,
-43663,
-89435,
83272,
-50585,
13616,
-71541,
-53156,
727,
-27644,
16538,
34049,
57745,
34348,
35009,
16634,
-18791,
23271,
-63844,
95817,
21781,
16590,
59669,
15966,
-6864,
48050,
-36143,
97427,
-59390,
96931,
78939,
-1958,
50777,
43338,
-51149,
39235,
-27054,
-43492,
67457,
-83616,
37179,
10390,
85818,
2391,
73635,
87579,
-49127,
-81264,
-79023,
-81590,
53554,
-74972,
-83940,
-13726,
-39095,
29174,
78072,
76104,
47778,
25797,
-29515,
-6493,
-92793,
22481,
-36197,
-65560,
42342,
15750,
97556,
99634,
-56048,
-35688,
13501,
63969,
-74291,
50911,
39225,
93702,
-3490,
-59461,
-30105,
-46761,
-80113,
92906,
-68487,
50742,
36152,
-90240,
-83631,
24597,
-50566,
-15477,
18470,
77038,
40223,
-80364,
-98676,
70957,
-63647,
99537,
13041,
31679,
86631,
37633,
-16866,
13686,
-71565,
21652,
-46053,
-80578,
-61382,
68487,
-6417,
4656,
20811,
67013,
-30868,
-11219,
46,
74944,
14627,
56965,
42275,
-52480,
52162,
-84883,
-52579,
-90331,
92792,
42184,
-73422,
-58440,
65308,
-25069,
5475,
-57996,
59557,
-17561,
2826,
-56939,
14996,
-94855,
-53707,
99159,
43645,
-67719,
-1331,
21412,
41704,
31612,
32622,
1919,
-69333,
-69828,
22422,
-78842,
57896,
-17363,
27979,
-76897,
35008,
46482,
-75289,
65799,
20057,
7170,
41326,
-76069,
90840,
-81253,
-50749,
3649,
-42315,
45238,
-33924,
62101,
96906,
58884,
-7617,
-28689,
-66578,
62458,
50876,
-57553,
6739,
41014,
-64040,
-34916,
37940,
13048,
-97478,
-11318,
-89440,
-31933,
-40357,
-59737,
-76718,
-14104,
-31774,
28001,
4103,
41702,
-25120,
-31654,
63085,
-3642,
84870,
-83896,
-76422,
-61520,
12900,
88678,
85547,
33132,
-88627,
52820,
63915,
-27472,
78867,
-51439,
33005,
-23447,
-3271,
-39308,
39726,
-74260,
-31874,
-36893,
93656,
910,
-98362,
60450,
-88048,
99308,
13947,
83996,
-90415,
-35117,
70858,
-55332,
-31721,
97528,
82982,
-86218,
6822,
25227,
36946,
97077,
-4257,
-41526,
56795,
89870,
75860,
-70802,
21779,
14184,
-16511,
-89156,
-31422,
71470,
69600,
-78498,
74079,
-19410,
40311,
28501,
26397,
-67574,
-32518,
68510,
38615,
19355,
-6088,
-97159,
-29255,
-92523,
3023,
-42536,
-88681,
64255,
41206,
44119,
52208,
39522,
-52108,
91276,
-70514,
83436,
63289,
-79741,
9623,
99559,
12642,
85950,
83735,
-21156,
-67208,
98088,
-7341,
-27763,
-30048,
-44099,
-14866,
-45504,
-91704,
19369,
13700,
10481,
-49344,
-85686,
33994,
19672,
36028,
60842,
66564,
-24919,
33950,
-93616,
-47430,
-35391,
-28279,
56806,
74690,
39284,
-96683,
-7642,
-75232,
37657,
-14531,
-86870,
-9274,
-26173,
98640,
88652,
64257,
46457,
37814,
-19370,
9337,
-22556,
-41525,
39105,
-28719,
51611,
-93252,
98044,
-90996,
21710,
-47605,
-64259,
-32727,
53611,
-31918,
-3555,
33316,
-66472,
21274,
-37731,
-2919,
15016,
48779,
-88868,
1897,
41728,
46344,
-89667,
37848,
68092,
-44011,
85354,
-43776,
38739,
-31423,
-66330,
65167,
-22016,
59405,
34328,
-60042,
87660,
-67698,
-59174,
-1408,
-46809,
-43485,
-88807,
-60489,
13974,
22319,
55836,
-62995,
-37375,
-4185,
32687,
-36551,
-75237,
58280,
26942,
-73756,
71756,
78775,
-40573,
14367,
-71622,
-77338,
24112,
23414,
-7679,
-51721,
87492,
85066,
-21612,
57045,
10673,
-96836,
52461,
-62218,
-9310,
65862,
-22748,
89906,
-96987,
-98698,
26956,
-43428,
46141,
47456,
28095,
55952,
67323,
-36455,
-60202,
-43302,
-82932,
42020,
77036,
10142,
60406,
70331,
63836,
58850,
-66752,
52109,
21395,
-10238,
-98647,
-41962,
27778,
69060,
98535,
-28680,
-52263,
-56679,
66103,
-42426,
27203,
80021,
10153,
58678,
36398,
63112,
34911,
20515,
62082,
-15659,
-40785,
27054,
43767,
-20289,
65838,
-6954,
-60228,
-72226,
52236,
-35464,
25209,
-15462,
-79617,
-41668,
-84083,
62404,
-69062,
18913,
46545,
20757,
13805,
24717,
-18461,
-47009,
-25779,
68834,
64824,
34473,
39576,
31570,
14861,
-15114,
-41233,
95509,
68232,
67846,
84902,
-83060,
17642,
-18422,
73688,
77671,
-26930,
64484,
-99637,
73875,
6428,
21034,
-73471,
19664,
-68031,
15922,
-27028,
48137,
54955,
-82793,
-41144,
-10218,
-24921,
-28299,
-2288,
68518,
-54452,
15686,
-41814,
66165,
-72207,
-61986,
80020,
50544,
-99500,
16244,
78998,
40989,
14525,
-56061,
-24692,
-94790,
21111,
37296,
-90794,
72100,
70550,
-31757,
17708,
-74290,
61910,
78039,
-78629,
-25033,
73172,
-91953,
10052,
64502,
99585,
-1741,
90324,
-73723,
68942,
28149,
30218,
24422,
16659,
10710,
-62594,
94249,
96588,
46192,
34251,
73500,
-65995,
-81168,
41412,
-98724,
-63710,
-54696,
-52407,
19746,
45869,
27821,
-94866,
-76705,
-13417,
-61995,
-71560,
43450,
67384,
-8838,
-80293,
-28937,
23330,
-89694,
-40586,
46918,
80429,
-5475,
78013,
25309,
-34162,
37236,
-77577,
86744,
26281,
-29033,
-91813,
35347,
13033,
-13631,
-24459,
3325,
-71078,
-75359,
81311,
19700,
47678,
-74680,
-84113,
45192,
35502,
37675,
19553,
76522,
-51098,
-18211,
89717,
4508,
-82946,
27749,
85995,
89912,
-53678,
-64727,
-14778,
32075,
-63412,
-40524,
86440,
-2707,
-36821,
63850,
-30883,
67294,
-99468,
-23708,
34932,
34386,
98899,
29239,
-23385,
5897,
54882,
98660,
49098,
70275,
17718,
88533,
52161,
63340,
50061,
-89457,
19491,
-99156,
24873,
-17008,
64610,
-55543,
50495,
17056,
-10400,
-56678,
-29073,
-42960,
-76418,
98562,
-88104,
-96255,
10159,
-90724,
54011,
12052,
45871,
-90933,
-69420,
67039,
37202,
78051,
-52197,
-40278,
-58425,
65414,
-23394,
-1415,
6912,
-53447,
7352,
17307,
-78147,
63727,
98905,
55412,
-57658,
-32884,
-44878,
22755,
39730,
3638,
35111,
39777,
74193,
38736,
-11829,
-61188,
-92757,
55946,
-71232,
-63032,
-83947,
39147,
-96684,
-99233,
25131,
-32197,
24406,
-55428,
-61941,
25874,
-69453,
64483,
-19644,
-68441,
12783,
87338,
-48676,
66451,
-447,
-61590,
50932,
-11270,
29035,
65698,
-63544,
10029,
80499,
-9461,
86368,
91365,
-81810,
-71914,
-52056,
-13782,
44240,
-30093,
-2437,
24007,
67581,
-17365,
-69164,
-8420,
-69289,
-29370,
48010,
90439,
13141,
69243,
50668,
39328,
61731,
78266,
-81313,
17921,
-38196,
55261,
9948,
-24970,
75712,
-72106,
28696,
7461,
31621,
61047,
51476,
56512,
11839,
-96916,
-82739,
28924,
-99927,
58449,
37280,
69357,
11219,
-32119,
-62050,
-48745,
-83486,
-52376,
42668,
82659,
68882,
38773,
46269,
-96005,
97630,
25009,
-2951,
-67811,
99801,
81587,
-79793,
-18547,
-83086,
69512,
33127,
-92145,
-88497,
47703,
59527,
1909,
88785,
-88882,
69188,
-46131,
-5589,
-15086,
36255,
-53238,
-33009,
82664,
53901,
35939,
-42946,
-25571,
33298,
69291,
53199,
74746,
-40127,
-39050,
91033,
51717,
-98048,
87240,
36172,
65453,
-94425,
-63694,
-30027,
59004,
88660,
3649,
-20267,
-52565,
-67321,
34037,
4320,
91515,
-56753,
60115,
27134,
68617,
-61395,
-26503,
-98929,
-8849,
-63318,
10709,
-16151,
61905,
-95785,
5262,
23670,
-25277,
90206,
-19391,
45735,
37208,
-31992,
-92450,
18516,
-90452,
-58870,
-58602,
93383,
14333,
17994,
82411,
-54126,
-32576,
35440,
-60526,
-78764,
-25069,
-9022,
-394,
92186,
-38057,
55328,
-61569,
67780,
77169,
19546,
-92664,
-94948,
44484,
-13439,
83529,
27518,
-48333,
72998,
38342,
-90553,
-98578,
-76906,
81515,
-16464,
78439,
92529,
35225,
-39968,
-10130,
-7845,
-32245,
-74955,
-74996,
67731,
-13897,
-82493,
33407,
93619,
59560,
-24404,
-57553,
19486,
-45341,
34098,
-24978,
-33612,
79058,
71847,
76713,
-95422,
6421,
-96075,
-59130,
-28976,
-16922,
-62203,
69970,
68331,
21874,
40551,
89650,
51908,
58181,
66480,
-68177,
34323,
-3046,
-49656,
-59758,
43564,
-10960,
-30796,
15473,
-20216,
46085,
-85355,
41515,
-30669,
-87498,
57711,
56067,
63199,
-83805,
62042,
91213,
-14606,
4394,
-562,
74913,
10406,
96810,
-61595,
32564,
31640,
-9732,
42058,
98052,
-7908,
-72330,
1558,
-80301,
34878,
32900,
3939,
-8824,
88316,
20937,
21566,
-3218,
-66080,
-31620,
86859,
54289,
90476,
-42889,
-15016,
-18838,
75456,
30159,
-67101,
42328,
-92703,
85850,
-5475,
23470,
-80806,
68206,
17764,
88235,
46421,
-41578,
74005,
-81142,
80545,
20868,
-1560,
64017,
83784,
68863,
-97516,
-13016,
-72223,
79630,
-55692,
82255,
88467,
28007,
-34686,
-69049,
-41677,
88535,
-8217,
68060,
-51280,
28971,
49088,
49235,
26905,
-81117,
-44888,
40623,
74337,
-24662,
97476,
79542,
-72082,
-35093,
98175,
-61761,
-68169,
59697,
-62542,
-72965,
59883,
-64026,
-37656,
-92392,
-12113,
-73495,
98258,
68379,
-21545,
64607,
-70957,
-92254,
-97460,
-63436,
-8853,
-19357,
-51965,
-76582,
12687,
-49712,
45413,
-60043,
33496,
31539,
-57347,
41837,
67280,
-68813,
52088,
-13155,
-86430,
-15239,
-45030,
96041,
18749,
-23992,
46048,
35243,
-79450,
85425,
-58524,
88781,
-39454,
53073,
-48864,
-82289,
39086,
82540,
-11555,
25014,
-5431,
-39585,
-89526,
2705,
31953,
-81611,
36985,
-56022,
68684,
-27101,
11422,
64655,
-26965,
-63081,
-13840,
-91003,
-78147,
-8966,
41488,
1988,
99021,
-61575,
-47060,
65260,
-23844,
-21781,
-91865,
-19607,
44808,
2890,
63692,
-88663,
-58272,
15970,
-65195,
-45416,
-48444,
-78226,
-65332,
-24568,
42833,
-1806,
-71595,
80002,
-52250,
30952,
48452,
-90106,
31015,
-22073,
62339,
63318,
78391,
28699,
77900,
-4026,
-76870,
-45943,
33665,
9174,
-84360,
-22684,
-16832,
-67949,
-38077,
-38987,
-32847,
51443,
-53580,
-13505,
9344,
-92337,
26585,
70458,
-52764,
-67471,
-68411,
-1119,
-2072,
-93476,
67981,
40887,
-89304,
-12235,
41488,
1454,
5355,
-34855,
-72080,
24514,
-58305,
3340,
34331,
8731,
77451,
-64983,
-57876,
82874,
62481,
-32754,
-39902,
22451,
-79095,
-23904,
78409,
-7418,
77916
]


# print(threeSum(list))

# print(find_index_of_first_positive(sorted(list)))=


class TestThreeSum(TestCase):
def test_sum(self):
self.assertEqual(threeSum([-1, 0, 1, 2, -1, -4]), [[-1, -1, 2]])
self.assertEqual(threeSum([0, 0, 0, 0]), [])
self.assertEqual(threeSum([0, 0]), [])
self.assertEqual(threeSum([-2, 0, 1, 1, 2]), [[-2, 0, 2], [-2, 1, 1]])
self.assertEqual(threeSum([-1, 0, 1, 0]), [[-1, 0, 1]])


Updated on 2020-03-19