File tree Expand file tree Collapse file tree 1 file changed +37
-0
lines changed
lcof2/剑指 Offer II 007. 数组中和为 0 的三个数 Expand file tree Collapse file tree 1 file changed +37
-0
lines changed Original file line number Diff line number Diff line change 50
50
51
51
<!-- tabs:start -->
52
52
53
+ ### ** Cyrus**
54
+
55
+ ``` javascript
56
+ /**
57
+ * 理解:三数之和的本质其实是【两数之和 twoSum】加多一个变量
58
+ * 两数之和关键点:排序、头尾双指针往中间逼近
59
+ * 所以这里首先排序,然后固定住 x,那么 y 和 z 其实就是两数之和的算法模板
60
+ * 注意去重
61
+ * @param {number[]} nums
62
+ * @return {number[][]}
63
+ */
64
+ var threeSum = function (nums ) {
65
+ var ret = new Array ();
66
+ if (! nums || nums .length < 3 ) return ret;
67
+
68
+ nums .sort ((l , r ) => l - r);
69
+ for (let i = 0 ; i < nums .length - 2 ;) {
70
+ for (let j = i + 1 , k = nums .length - 1 ; j < k;) {
71
+ let sum = nums[i] + nums[j] + nums[k];
72
+
73
+ if (sum < 0 ) {
74
+ j++ ;
75
+ } else if (sum > 0 ) {
76
+ k-- ;
77
+ } else {
78
+ ret .push ([nums[i], nums[j], nums[k]]);
79
+ for (let diff = nums[j]; diff == nums[j] && j < k; j++ ) {}
80
+ for (let diff = nums[k]; diff == nums[k] && j < k; k-- ) {}
81
+ }
82
+ }
83
+ for (let diff = nums[i]; diff == nums[i] && i < nums .length - 2 ; i++ ) {}
84
+ }
85
+
86
+ return ret;
87
+ };
88
+ ```
89
+
53
90
### ** Python3**
54
91
55
92
<!-- 这里可写当前语言的特殊实现逻辑 -->
You can’t perform that action at this time.
0 commit comments