File tree Expand file tree Collapse file tree 2 files changed +94
-0
lines changed Expand file tree Collapse file tree 2 files changed +94
-0
lines changed Original file line number Diff line number Diff line change
1
+ /*
2
+ * @lc app=leetcode.cn id=14 lang=javascript
3
+ *
4
+ * [14] 最长公共前缀
5
+ */
6
+
7
+ // @lc code=start
8
+ /**
9
+ * @param {string[] } strs
10
+ * @return {string }
11
+ */
12
+ var longestCommonPrefix = function ( strs ) {
13
+ if ( strs . length === 0 ) return 0
14
+ let ans = strs [ 0 ]
15
+ for ( let i = 1 ; i < strs . length ; i ++ ) {
16
+ let j = 0
17
+ for ( ; j < ans . length && j < strs [ i ] . length ; j ++ ) {
18
+ if ( ans [ j ] != strs [ i ] [ j ] ) break
19
+ }
20
+ ans = ans . substr ( 0 , j )
21
+ if ( ans === "" ) return ans
22
+ }
23
+ return ans
24
+ } ;
25
+ // @lc code=end
26
+
Original file line number Diff line number Diff line change
1
+ /*
2
+ * @lc app=leetcode.cn id=16 lang=javascript
3
+ *
4
+ * [16] 最接近的三数之和
5
+ */
6
+
7
+ // @lc code=start
8
+ /**
9
+ * @param {number[] } nums
10
+ * @param {number } target
11
+ * @return {number }
12
+ */
13
+ var threeSumClosest = function ( nums , target ) {
14
+ nums . sort ( ( a , b ) => a - b ) ;
15
+ const n = nums . length ;
16
+ let ans = 0 ;
17
+ let minDiff = Number . MAX_SAFE_INTEGER ;
18
+ for ( let i = 0 ; i < n - 2 ; i ++ ) {
19
+ const x = nums [ i ] ;
20
+ if ( i > 0 && x === nums [ i - 1 ] ) {
21
+ continue ; // 优化三
22
+ }
23
+
24
+ // 优化一
25
+ let s = x + nums [ i + 1 ] + nums [ i + 2 ] ;
26
+ if ( s > target ) { // 后面无论怎么选,选出的三个数的和不会比 s 还小
27
+ if ( s - target < minDiff ) {
28
+ ans = s ; // 由于下面直接 break,这里无需更新 minDiff
29
+ }
30
+ break ;
31
+ }
32
+
33
+ // 优化二
34
+ s = x + nums [ n - 2 ] + nums [ n - 1 ] ;
35
+ if ( s < target ) { // x 加上后面任意两个数都不超过 s,所以下面的双指针就不需要跑了
36
+ if ( target - s < minDiff ) {
37
+ minDiff = target - s ;
38
+ ans = s ;
39
+ }
40
+ continue ;
41
+ }
42
+
43
+ // 双指针
44
+ let j = i + 1 , k = n - 1 ;
45
+ while ( j < k ) {
46
+ s = x + nums [ j ] + nums [ k ] ;
47
+ if ( s === target ) {
48
+ return target ;
49
+ }
50
+ if ( s > target ) {
51
+ if ( s - target < minDiff ) { // s 与 target 更近
52
+ minDiff = s - target ;
53
+ ans = s ;
54
+ }
55
+ k -- ;
56
+ } else { // s < target
57
+ if ( target - s < minDiff ) { // s 与 target 更近
58
+ minDiff = target - s ;
59
+ ans = s ;
60
+ }
61
+ j ++ ;
62
+ }
63
+ }
64
+ }
65
+ return ans ;
66
+ } ;
67
+ // @lc code=end
68
+
You can’t perform that action at this time.
0 commit comments