Skip to content

Commit dde05a6

Browse files
Merge pull request youngyangyang04#1256 from pzppzz/master
更新了0015三数之和javascript版本,去除多余代码
2 parents 2891b76 + 00b5e2a commit dde05a6

File tree

2 files changed

+49
-62
lines changed

2 files changed

+49
-62
lines changed

problems/0015.三数之和.md

Lines changed: 26 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -313,54 +313,36 @@ func threeSum(nums []int)[][]int{
313313
javaScript:
314314

315315
```js
316-
/**
317-
* @param {number[]} nums
318-
* @return {number[][]}
319-
*/
320-
321-
// 循环内不考虑去重
322-
var threeSum = function(nums) {
323-
const len = nums.length;
324-
if(len < 3) return [];
325-
nums.sort((a, b) => a - b);
326-
const resSet = new Set();
327-
for(let i = 0; i < len - 2; i++) {
328-
if(nums[i] > 0) break;
329-
let l = i + 1, r = len - 1;
330-
while(l < r) {
331-
const sum = nums[i] + nums[l] + nums[r];
332-
if(sum < 0) { l++; continue };
333-
if(sum > 0) { r--; continue };
334-
resSet.add(`${nums[i]},${nums[l]},${nums[r]}`);
335-
l++;
336-
r--;
337-
}
338-
}
339-
return Array.from(resSet).map(i => i.split(","));
340-
};
341-
342-
// 去重优化
343316
var threeSum = function(nums) {
344-
const len = nums.length;
345-
if(len < 3) return [];
346-
nums.sort((a, b) => a - b);
347-
const res = [];
348-
for(let i = 0; i < len - 2; i++) {
349-
if(nums[i] > 0) break;
350-
// a去重
351-
if(i > 0 && nums[i] === nums[i - 1]) continue;
352-
let l = i + 1, r = len - 1;
317+
const res = [], len = nums.length
318+
// 将数组排序
319+
nums.sort((a, b) => a - b)
320+
for (let i = 0; i < len; i++) {
321+
let l = i + 1, r = len - 1, iNum = nums[i]
322+
// 数组排过序,如果第一个数大于0直接返回res
323+
if (iNum > 0) return res
324+
// 去重
325+
if (iNum == nums[i - 1]) continue
353326
while(l < r) {
354-
const sum = nums[i] + nums[l] + nums[r];
355-
if(sum < 0) { l++; continue };
356-
if(sum > 0) { r--; continue };
357-
res.push([nums[i], nums[l], nums[r]])
358-
// b c 去重
359-
while(l < r && nums[l] === nums[++l]);
360-
while(l < r && nums[r] === nums[--r]);
327+
let lNum = nums[l], rNum = nums[r], threeSum = iNum + lNum + rNum
328+
// 三数之和小于0,则左指针向右移动
329+
if (threeSum < 0) l++
330+
else if (threeSum > 0) r--
331+
else {
332+
res.push([iNum, lNum, rNum])
333+
// 去重
334+
while(l < r && nums[l] == nums[l + 1]){
335+
l++
336+
}
337+
while(l < r && nums[r] == nums[r - 1]) {
338+
r--
339+
}
340+
l++
341+
r--
342+
}
361343
}
362344
}
363-
return res;
345+
return res
364346
};
365347
```
366348
TypeScript:

problems/0131.分割回文串.md

Lines changed: 23 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -454,31 +454,36 @@ var partition = function(s) {
454454

455455
```typescript
456456
function partition(s: string): string[][] {
457-
function isPalindromeStr(s: string, left: number, right: number): boolean {
458-
while (left < right) {
459-
if (s[left++] !== s[right--]) {
460-
return false;
457+
const res: string[][] = []
458+
const path: string[] = []
459+
const isHuiwen = (
460+
str: string,
461+
startIndex: number,
462+
endIndex: number
463+
): boolean => {
464+
for (; startIndex < endIndex; startIndex++, endIndex--) {
465+
if (str[startIndex] !== str[endIndex]) {
466+
return false
461467
}
462468
}
463-
return true;
469+
return true
464470
}
465-
function backTracking(s: string, startIndex: number, route: string[]): void {
466-
let length: number = s.length;
467-
if (length === startIndex) {
468-
resArr.push(route.slice());
469-
return;
471+
const rec = (str: string, index: number): void => {
472+
if (index >= str.length) {
473+
res.push([...path])
474+
return
470475
}
471-
for (let i = startIndex; i < length; i++) {
472-
if (isPalindromeStr(s, startIndex, i)) {
473-
route.push(s.slice(startIndex, i + 1));
474-
backTracking(s, i + 1, route);
475-
route.pop();
476+
for (let i = index; i < str.length; i++) {
477+
if (!isHuiwen(str, index, i)) {
478+
continue
476479
}
480+
path.push(str.substring(index, i + 1))
481+
rec(str, i + 1)
482+
path.pop()
477483
}
478484
}
479-
const resArr: string[][] = [];
480-
backTracking(s, 0, []);
481-
return resArr;
485+
rec(s, 0)
486+
return res
482487
};
483488
```
484489

0 commit comments

Comments
 (0)