File tree Expand file tree Collapse file tree 3 files changed +122
-0
lines changed Expand file tree Collapse file tree 3 files changed +122
-0
lines changed Original file line number Diff line number Diff line change
1
+ #include " test.h"
2
+
3
+
4
+ class Solution {
5
+ public:
6
+ int abs (int a)
7
+ {
8
+ return a < 0 ? -a : a;
9
+ }
10
+ int threeSumClosest (vector<int >& nums, int target)
11
+ {
12
+ if (nums.size () < 3 )
13
+ return 0 ;
14
+
15
+ auto ret = nums[0 ] + nums[1 ] + nums[2 ];
16
+ if (nums.size () == 3 )
17
+ return ret;
18
+
19
+ sort (nums.begin (), nums.end ());
20
+
21
+ auto i = 0u ;
22
+ while (i < nums.size () - 2 )
23
+ {
24
+ auto j = i + 1 ;
25
+ auto k = nums.size () - 1 ;
26
+ while (j < k)
27
+ {
28
+ auto tmp = nums[i] + nums[j] + nums[k];
29
+
30
+ auto oldDist = ret - target;
31
+ auto dist = tmp - target;
32
+
33
+ if (abs (oldDist) > abs (dist))
34
+ ret = tmp;
35
+
36
+ if (dist == 0 )
37
+ return tmp;
38
+
39
+ dist > 0 ? --k : ++j;
40
+ }
41
+
42
+ if (nums[i] > target)
43
+ return ret;
44
+
45
+ ++i;
46
+ }
47
+ return ret;
48
+ }
49
+ };
50
+
51
+
52
+
53
+ int main ()
54
+ {
55
+ vector<tuple<vector<int >, int >> datas =
56
+ {
57
+ // {{1,1,1,0},100},
58
+ {{0 ,2 ,1 ,-3 }, 1 },
59
+ };
60
+ Solution s;
61
+ for (auto & data : datas)
62
+ cout << s.threeSumClosest (std::get<0 >(data), std::get<1 >(data)) << endl;
63
+ return 0 ;
64
+ }
Original file line number Diff line number Diff line change
1
+ #include " test.h"
2
+
3
+
4
+ class Solution {
5
+ public:
6
+ vector<string> letterCombinations (string digits)
7
+ {
8
+ vector<string> ret;
9
+ if (digits.empty ())
10
+ return ret;
11
+
12
+ std::vector<std::vector<std::string>> digit2chars =
13
+ {
14
+ {" a" , " b" , " c" },
15
+ {" d" , " e" , " f" },
16
+ {" g" , " h" , " i" },
17
+ {" j" , " k" , " l" },
18
+ {" m" , " n" , " o" },
19
+ {" p" , " q" , " r" , " s" },
20
+ {" t" , " u" , " v" },
21
+ {" w" , " x" , " y" , " z" },
22
+ };
23
+
24
+ ret.push_back (" " );
25
+
26
+ for (auto i = 0u ; i < digits.size (); ++i)
27
+ {
28
+ vector<string> newRet;
29
+ auto items = digit2chars[digits[i] - ' 2' ];
30
+ for (auto r : ret)
31
+ for (auto item : items)
32
+ newRet.push_back (r + item);
33
+ ret = newRet;
34
+ }
35
+ return ret;
36
+ }
37
+ };
38
+
39
+ static int x = []()
40
+ {
41
+ std::ios::sync_with_stdio (false );
42
+ cin.tie (nullptr );
43
+ return 0 ;
44
+ }();
45
+
46
+ int main ()
47
+ {
48
+ vector<string> datas =
49
+ {
50
+ " 23" ,
51
+ };
52
+ Solution s;
53
+ for (auto & data : datas)
54
+ cout << s.letterCombinations (data) << endl;
55
+ return 0 ;
56
+ }
Original file line number Diff line number Diff line change @@ -14,6 +14,8 @@ targets = \
14
14
13_roman_to_integer.exec\
15
15
14_longest_common_prefix.exec\
16
16
15_3_sum.exec\
17
+ 16_3sum_closest.exec\
18
+ 17_letter_ombinations_of_a_phone_number.exec\
17
19
502_ipo.exec\
18
20
19
21
You can’t perform that action at this time.
0 commit comments