在此记录一下用javascript刷leetcode的过程,每天都要坚持!
1.Two Sum
/**
* @param {number[]} nums
* @param {number} target
* @return {number[]}
*/
var twoSum = function(nums, target) {
var len = nums.length,
need,
map = {},
numbers = [];
for(var i = 0; i < len; i++){
need = target - nums[i];
if(need in map){
numbers.push(map[need] + 1);
numbers.push(i + 1);
break;
}else{
map[nums[i]] = i;
}
}
return numbers;
};
这道题目注意下复杂度别傻傻的用双循环...
20.Valid Parentheses
/**
* @param {string} s
* @return {boolean}
*/
var isValid = function(s) {
var len = s.length,
cur,
stack = [],
map = {'(':')','[':']','{':'}'};
for(var i = 0; i < len; i++) {
cur = s[i];
if(map.hasOwnProperty(cur)){
stack.push(cur);
}else{
if(stack.length === 0){
return false;
}else{
stackTop = stack.pop();
if(map[stackTop] !== cur){
return false;
}
}
}
}
if(stack.length === 0){
return true;
}else{
return false;
}
};
这道题目是利用堆栈的,比较巧妙,数据结构很多记不得了,最近抽时间多翻翻。
189.Rotate Array
/**
* @param {number[]} nums
* @param {number} k
* @return {void} Do not return anything, modify nums in-place instead.
*/
var rotate = function(nums, k) {
var len = nums.length;
if(len === 0 || len === 1 || k===0){
return;
}
var move = nums.splice(len - k,len);
for(var i = move.length - 1;i >= 0;i--){
nums.unshift(move[i]);
}
};
这题用js写的话就是考察下数组操作方法了,注意下特殊情况即可。