LeetCode刷题(八)

LeetCode 是个著名的编程题库,里边有很多面试、算法题目,多刷刷对提高编程水平很有帮助,避免因为天天写业务代码而停滞不前。最近玩了下挺有意思的,决定慢慢的刷起来,在这里记录一下我的刷题过程。

相关资料:

  • 我的LeetCode
  • 我的GitHub

备注:

  • 先从简单的开始刷,简单记录每道题的题目,解法和思路。
  • 因为之前并没有什么算法基础,所以很多解法可能并不是最优解。
  • 先把重点放在解题,故有些变量名并不严谨,但代码其他方面都尽可能遵循了规范,并使用ES6+的新特性。

题目

存在重复元素

思路

转map,key为nums中的元素,value为元素出现的次数。存在value大于1的属性,则返回true。

解法

/**
 * @param {number[]} nums
 * @return {boolean}
 */
var containsDuplicate = function(nums) {
    let map = {};
    nums.map(n => {
        if (map[n]) {
            map[n] += 1;
        } else {
            map[n] = 1;
        }
    });
    let result = false;
    for (key in map) {
        if(map[key] > 1) {
            result = true;
            break;
        }
    }
    return result;
};

题目

第三大的数

思路

先排序,去重。然后看得到的数组长度,小于3返回第一个,否则返回第三个。

解法

/**
 * @param {number[]} nums
 * @return {number}
 */
var thirdMax = function(nums) {
    nums.sort((a,b) => b - a);
    let newNums = [];
    for(let i=0;i<nums.length;i++) {
       if(nums[i] === nums[i-1] && i !== 0) {
           continue;
        }
        newNums.push(nums[i])
    }
    const length = newNums.length;
    if(length < 3) {
        return newNums[0];
    }
    return newNums[2];
};

题目

x的平方根

思路

n的平方小于x时n++,然后根据n的平方是大于还是等于,取得n

解法

/**
 * @param {number} x
 * @return {number}
 */
var mySqrt = function(x) {
    let n = 1;
    while(n * n < x) {
        n++
    }
    if (n * n === x) {
        return n
    } else {
        return n - 1;
    }
};

题目

Nim游戏

思路

当有4块石头时,谁先手谁输。展开思考得出,当有4n块石头时,也是谁先手谁输。所以直接n对4取余,如果余数不是0,那么我先手,就能给对手留下4n块,我就能赢。否则我输。

解法

/**
 * @param {number} n
 * @return {boolean}
 */
var canWinNim = function(n) {
    return n % 4 !== 0
};

题目

翻转图像

思路

遍历reverse,然后0变1,1变0,生成result。

解法

/**
 * @param {number[][]} A
 * @return {number[][]}
 */
var flipAndInvertImage = function(A) {
    A.forEach(item => {
        item = item.reverse();

    });
    let result = [];
    A.map(item => {
        let list = [];
        item.map(i => {
            list.push(i === 1 ? 0 : 1);
        });
        result.push(list);
    });
    return result;
};

你可能感兴趣的:(LeetCode)