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;
};

END