Skip to content

Commit 9db5a82

Browse files
Merge pull request #12 from theonerk/master
第一周作业#13
2 parents 1bf882d + 62b6ab7 commit 9db5a82

File tree

7 files changed

+216
-0
lines changed

7 files changed

+216
-0
lines changed

Week_01/id_13/LeetCode_15_013.js

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
/**
2+
* @param {number[]} nums
3+
* @return {number[][]}
4+
* https://leetcode.com/problems/3sum/
5+
*/
6+
7+
var threeSum = function(nums) {
8+
if(nums.length < 3) return [];
9+
nums.sort(function(a,b){return a-b;});
10+
let start= 0;
11+
let result = new Map();
12+
while(nums.length-1>start+1)
13+
{
14+
let end = nums.length-1;
15+
let index = start+1;
16+
while(index<end)
17+
{
18+
19+
let sum = nums[start]+nums[index] + nums[end];
20+
if(sum == 0 )
21+
{
22+
let newArray = [nums[start],nums[index],nums[end]];
23+
result.set(newArray.join(''),newArray);
24+
while(nums[index]==nums[index+1])
25+
{
26+
index++;
27+
}
28+
index++;
29+
continue;
30+
}
31+
if(sum >0)
32+
{
33+
while(nums[end]==nums[end-1])
34+
{
35+
end --;
36+
}
37+
end = end-1;
38+
}
39+
else
40+
{
41+
while(nums[index]==nums[index+1])
42+
{
43+
index++;
44+
}
45+
index++;
46+
}
47+
}
48+
start = start+1;
49+
}
50+
let resultArray = new Array();
51+
result.forEach(element => {
52+
resultArray.push(element);
53+
54+
});
55+
56+
return resultArray;
57+
58+
};
59+
60+
let nums = [-4,-2,-2,-2,0,1,2,2,2,3,3,4,4,6,6];
61+
console.log(threeSum(nums));

Week_01/id_13/LeetCode_189_013.js

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
//https://leetcode.com/problems/rotate-array/
2+
3+
var rotate = function(nums, k) {
4+
if(nums.length<2) return nums;
5+
if(k>0)
6+
{
7+
k=k%nums.length;
8+
reverse(nums,0,nums.length-1);
9+
reverse(nums,0,k-1);
10+
reverse(nums,k,nums.length-1);
11+
}
12+
return nums;
13+
14+
};
15+
16+
function reverse(nums,start,end)
17+
{
18+
if(!nums || !nums.length || start >=end) return ;
19+
while (start<end) {
20+
let temp = nums[start];
21+
nums[start] = nums[end];
22+
nums[end] = temp;
23+
start++;
24+
end --;
25+
}
26+
return nums;
27+
28+
}
29+
let nums=[1,2,3,4,5,6,7];
30+
let k = 3;
31+
console.log(rotate(nums,k));

Week_01/id_13/LeetCode_24_013.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
//https://leetcode.com/problems/swap-nodes-in-pairs/
2+
3+
var swapPairs = function(head) {
4+
if(!head || !head.next) return head;
5+
let dummy = new ListNode(0);
6+
dummy.next = head;
7+
let current = dummy;
8+
while (current.next && current.next.next)
9+
{
10+
let n = current.next;
11+
let nn = current.next.next;
12+
current.next.next = current.next.next.next;
13+
current.next = nn;
14+
current.next.next=n;
15+
current = current.next.next
16+
17+
}
18+
return dummy.next;
19+
};

Week_01/id_13/LeetCode_26_013.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
/**
2+
* @param {number[]} nums
3+
* @return {number}
4+
* https://leetcode.com/problems/remove-duplicates-from-sorted-array/
5+
*/
6+
var removeDuplicates = function(nums) {
7+
if(nums.length==0) return nums;
8+
let start = 0;
9+
for (let index = 0; index < nums.length; index++) {
10+
if(nums[start]!=nums[index])
11+
{
12+
start++;
13+
nums[start] = nums[index];
14+
}
15+
}
16+
return start;
17+
18+
};
19+
20+
let nums=[1,1,2];
21+
console.log(removeDuplicates(nums));
22+

Week_01/id_13/LeetCode_42_013.js

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
/**
2+
* @param {number[]} height
3+
* @return {number}
4+
* https://leetcode.com/problems/trapping-rain-water/
5+
*/
6+
var trap = function(height) {
7+
if (height.length<2) return 0;
8+
let head = 0;
9+
let tail = head+1;
10+
let totalArea=0;
11+
let temp=0;
12+
while(tail<height.length)
13+
{
14+
temp = temp+height[tail-1];
15+
if(height[tail]>height[head])
16+
{
17+
let a= (tail-head) * height[head] - temp;
18+
totalArea += a;
19+
temp=0;
20+
head= tail;
21+
}
22+
tail ++;
23+
}
24+
head = height.length-1;
25+
tail = head-1;
26+
temp = 0;
27+
while(tail >=0 )
28+
{
29+
temp = temp+height[tail+1];
30+
if(height[tail]>=height[head])
31+
{
32+
let a= (head-tail)*height[head]-temp;
33+
totalArea += a;
34+
temp=0;
35+
head= tail;
36+
}
37+
tail --;
38+
}
39+
return totalArea;
40+
};
41+
42+
let height=[2,0,2];
43+
console.log(trap(height));

Week_01/id_13/LeetCode_49_013.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
/**
2+
* @param {string[]} strs
3+
* @return {string[][]}
4+
* https://leetcode.com/problems/group-anagrams/
5+
*/
6+
var groupAnagrams = function(strs) {
7+
let res = {};
8+
for (let str of strs) {
9+
let tmp = str.split('').sort().join('');
10+
(res[tmp] == null) ? res[tmp] = [str] : res[tmp].push(str);
11+
}
12+
return Object.values(res);
13+
};
14+
15+
let input= ["eat", "tea", "tan", "ate", "nat", "bat"];
16+
console.log(groupAnagrams(input));

Week_01/id_13/LeetCode_50_013.js

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
/**
2+
* @param {number} x
3+
* @param {number} n
4+
* @return {number}
5+
* https://leetcode.com/problems/powx-n/
6+
*/
7+
8+
var myPow = function(x, n) {
9+
if(n == 1) return x;
10+
if(n == 0) return 1;
11+
if(n < 0) return 1/myPow(x,-n);
12+
if(n%2==0)
13+
{
14+
let val= myPow(x,n/2);
15+
return val*val;
16+
}
17+
else
18+
{
19+
let val = myPow(x,(n-1)/2);
20+
return val*val*x;
21+
}
22+
23+
}
24+
console.log(myPow(0.00001,2147483647));

0 commit comments

Comments
 (0)