Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitbde1f4e

Browse files
committed
7, 28, 125, 204, 228, 278
1 parent350acd9 commitbde1f4e

File tree

7 files changed

+173
-1
lines changed

7 files changed

+173
-1
lines changed

‎Easy/125-validPalindrome.js‎

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
/**
2+
* Key: use regular expression to find only alpha and numeric letters.
3+
* Two pointers: start and end
4+
*
5+
*@param {string} s
6+
*@return {boolean}
7+
*/
8+
varisPalindrome=function(s){
9+
varpattern=/[a-z0-9]/gi;
10+
s=s.match(pattern);
11+
if(!s||s.length===1)returntrue;
12+
for(vari=0;i<s.length/2;i++){
13+
if(s[i].toLowerCase()!==s[s.length-1-i].toLowerCase())returnfalse;
14+
}
15+
16+
returntrue;
17+
};

‎Easy/204-countPrimes.js‎

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
/**
2+
*@param {number} n
3+
*@return {number}
4+
*/
5+
varcountPrimes=function(n){
6+
varcount=0;
7+
for(vari=1;i<n;i++){
8+
if(isPrime(i))count++;
9+
}
10+
returncount;
11+
};
12+
13+
// traditional approach, to determine a number is prime or not,
14+
// only need to consider factors up to √n
15+
varisPrime=function(num){
16+
if(num<=1)returnfalse;
17+
// Loop's ending condition is i * i <= num instead of i <= sqrt(num)
18+
// to avoid repeatedly calling an expensive function sqrt().
19+
for(vari=2;i*i<=num;i++){
20+
if(num%i==0)returnfalse;
21+
}
22+
returntrue;
23+
};
24+
25+
26+
/**
27+
* A better solution using Sieve of Eratosthenes
28+
* if the current number is p,
29+
* mark off multiples of p starting at p^2, then in increments of p: p^2 + p, p^2 + 2p, ...
30+
* these above numbers are not prime numbers
31+
*
32+
*@param {number} n
33+
*@return {number}
34+
*/
35+
varcountPrimes=function(n){
36+
varcount=0;
37+
varisPrime=[];
38+
for(vari=2;i<n;i++)isPrime[i]=true;
39+
for(vari=2;i*i<n;i++){
40+
if(isPrime[i]){
41+
varstart=i*i;
42+
while(start<=n){
43+
isPrime[start]=false;
44+
start=start+i;
45+
}
46+
}
47+
}
48+
for(varj=2;j<n;j++){
49+
if(isPrime[j])count++;
50+
}
51+
52+
returncount;
53+
};

‎Easy/228-summaryRanges.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 {string[]}
4+
*/
5+
varsummaryRanges=function(nums){
6+
varranges=[];
7+
for(vari=0;i<nums.length;i++){
8+
varj=i;
9+
while(nums[j+1]){
10+
if((nums[j+1]-nums[j])===1)j++;
11+
elsebreak;
12+
}
13+
if(nums[i]!==nums[j]){
14+
ranges.push(nums[i]+'->'+nums[j]);
15+
}else{
16+
ranges.push(''+nums[i]);
17+
}
18+
i=j;
19+
}
20+
21+
returnranges;
22+
};

‎Easy/278-firstBadVersion.js‎

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
/**
2+
* Definition for isBadVersion()
3+
*
4+
*@param {integer} version number
5+
*@return {boolean} whether the version is bad
6+
* isBadVersion = function(version) {
7+
* ...
8+
* };
9+
*/
10+
11+
/**
12+
*@param {function} isBadVersion()
13+
*@return {function}
14+
*/
15+
varsolution=function(isBadVersion){
16+
/**
17+
* Key: binary search, be careful to set low and high correctly
18+
*
19+
*@param {integer} n Total versions
20+
*@return {integer} The first bad version
21+
*/
22+
returnfunction(n){
23+
varlow=1;
24+
varhigh=n;
25+
while(low<high){
26+
// be careful in JavaScript, using Math.floor to get the integer part
27+
varmid=Math.floor(low+(high-low)/2);
28+
if(!isBadVersion(mid))low=mid+1;
29+
// and not `mid - 1` to high
30+
elsehigh=mid;
31+
}
32+
returnlow;
33+
};
34+
};

‎Easy/28-implementstrStr.js‎

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
/**
2+
*@param {string} haystack
3+
*@param {string} needle
4+
*@return {number}
5+
*/
6+
varstrStr=function(haystack,needle){
7+
varhIndex=0;
8+
while((haystack.length-hIndex)>=needle.length){
9+
varnIndex=0;
10+
if(haystack[hIndex]===needle[nIndex]){
11+
while(nIndex<needle.length){
12+
if(haystack[hIndex+nIndex]!==needle[nIndex])break;
13+
nIndex++;
14+
}
15+
}
16+
if(nIndex===needle.length)break;
17+
elsehIndex++;
18+
}
19+
20+
if((haystack.length-hIndex)<needle.length)return-1;
21+
returnhIndex;
22+
};
23+
24+
// a better solution? KMP?

‎Easy/303-rangeSumQuery.js‎

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
/**
22
* Key: Dynamic Programming
3-
*
3+
* add an array to track the sum of previous elements
4+
* sums[i] = sum[i-1] + nums[i-1];
5+
* sumRange[i, j] = sums[j+1] - sums[i];
6+
*
47
*@constructor
58
*@param {number[]} nums
69
*/

‎Easy/7-reverseInteger.js‎

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
/**
2+
*@param {number} x
3+
*@return {number}
4+
*/
5+
varreverse=function(x){
6+
varrevX=0;
7+
varabsX=Math.abs(x);
8+
while(absX>0){
9+
varlast=absX%10;
10+
revX=revX*10+last;
11+
absX=(absX-last)/10;
12+
}
13+
14+
// in case overflow, in JavaScript maximum number is 2^31 - 1
15+
if(revX>Math.pow(2,31)-1)return0;
16+
17+
if(x<0)revX=-revX;
18+
returnrevX;
19+
};

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp