Skip to content

Commit b1396bf

Browse files
add: 更新下
1 parent e3c9922 commit b1396bf

File tree

2 files changed

+94
-0
lines changed

2 files changed

+94
-0
lines changed

labuladuo/14.最长公共前缀.js

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
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+
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
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+

0 commit comments

Comments
 (0)