Ahri-珊
day19将分享LeetCode算法题217,219,225。
LeetCode
今天的三道题涉及到数组与原型方法的使用。
217. Contains Duplicate
判断数组中是否有重复元素。
心路历程
方法1:
1.将数组排序
2.使用游标对相邻两个元素值进行对比,相等返回true
3.元素遍历完未找到相等元素,返回false
方法2;
1.声明一个hash数组
2.遍历数组,以元素值为下标的hash元素不存在时,初始化hash元素,计数器+1
3.遍历完数组,计数器和数组长度相同说明没有相等元素,返回false,否则返回true
代码:
var containsDuplicate = function(nums) {
nums = nums.sort();
var cursor = 0;
for(let i=1;i<nums.length;i++)
{
if(nums[cursor]!=nums[i])
cursor++;
else
return true;
}
return false;
};
var containsDuplicate = function(nums) {
var hash = [];
var count = 0;
for(let i=0;i<nums.length;i++)
{
if(hash[nums[i]]==null)
{
hash[nums[i]] = i;
count++;
}
}
219. Contains Duplicate II
判断数组是否存在只相隔k个元素之内的相同元素
心路历程
1.建立一个hash数组
2.遍历数组,若以当前数组值为坐标的hash元素不存在,hash[nums[i]]=i
3.若存在并且i与之前存入的i相差不超过k则返回true
4.若相差超过k则用当前i覆盖之前的i
5.数组遍历完还未找到满足要求的情况,返回false
代码:
var containsNearbyDuplicate = function(nums, k) {
var hash = [];
for(let i=0;i<nums.length;i++)
{
if(hash[nums[i]]==null)
{
hash[nums[i]] = i;
}
else
{
if(i-hash[nums[i]]<=k)
return true;
else
hash[nums[i]] = i;
}
}
return false;
};
console.log(hash);
console.log(count);
if(count!==nums.length)
return true;
else
return false;
};
225. Implement Stack using Queues
做一个栈0.0
心路历程
这道题之前做过几乎一样的,会使用原型方法就很简单啦
代码:
var MyStack = function() {
this.nums = [];
};
/**
* Push element x onto stack.
* @param {number} x
* @return {void}
*/
MyStack.prototype.push = function(x) {
return this.nums.push(x);
};
/**
* Removes the element on top of the stack and returns that element.
* @return {number}
*/
MyStack.prototype.pop = function() {
return this.nums.pop();
};
/**
* Get the top element.
* @return {number}
*/
MyStack.prototype.top = function() {
return this.nums[this.nums.length-1];
};
/**
* Returns whether the stack is empty.
* @return {boolean}
*/
MyStack.prototype.empty = function() {
if(this.nums.length==0)
return true;
else
return false;
};
Comments