美文网首页前端那些事情
leetcode 题目的一些记录

leetcode 题目的一些记录

作者: 幺加幺 | 来源:发表于2018-03-02 17:09 被阅读5次

    leetcode 上面有很多经典的算法问题,从易到难,也是各种大公司喜欢问的一些算法问题。先做个记录。

    Two Sum

    Given an array of integers, return indices of the two numbers such that they add up to a specific target.

    You may assume that each input would have exactly one solution, and you may not use the same element twice.

    Example:

    Given nums = [2, 7, 11, 15], target = 9,
    
    Because nums[0] + nums[1] = 2 + 7 = 9,
    return [0, 1].
    
    

    javascript (或其他编程语言)

    /**
     * @param {number[]} nums
     * @param {number} target
     * @return {number[]}
     */
    var twoSum = function(nums, target) {
    
    };
    

    上面是 leetcode 一道容易级别的题目,如果题目看不懂,那么请直接看 Example ,一个数组,里面存放着若干数字,一个目标数字,请查找出在该数组 哪两个数字相加等于目标数字,然后把这两个数字的下标返回。

    解决思路:

    1.先拿到数组第一个数字,分别和 第二,第三,第四,第n (数组最后一个数字) 个数字相加,判断两个数字的和是否等于目标值。

    2.如果第一个找不到符合的两个数字,拿数组第二个数字和第三个,第四个数字,第n (数组最后一个数字) 个数字相加。

    穷举法

    代码如下

    /**
     * @param {number[]} nums
     * @param {number} target
     * @return {number[]}
     */
    var twoSum = function(nums, target) {
        for (var i = 0; i < nums.length; i++) {
            for (var j = i + 1; j < nums.length; j++) {
                if (nums[j] == target - nums[i]) {
                    return [i,j];
                }
            }
        }
    };
    
    

    当然,每个人的思想以及解决问题的思路都也不一样,也有各种计算的方法。因此,要找到最优的计算方式,或者相对好的算法。这个问题也有一些扩展的部分。

    扩展1:

    Example:

    Given nums = [2, 7, 8,11, 15,1], target = 9,
    
    Because nums[0] + nums[1] = 2 + 7 = 9,
    Because nums[2] + nums[5] = 2 + 7 = 9,
    
    return [[0, 1],[2,5]].
    

    扩展2:

    Example:

    Given nums = [2, 7, 5,3, 15,1], target = 10,
    
    Because nums[0] + nums[2] + nums[3]  = 2 + +5 + 3 = 10,
    return [0,2,3].
    
    or nums[1] +  nums[3]  = 7 + 3 = 10,
    return [1,3].
    

    相关文章

      网友评论

        本文标题:leetcode 题目的一些记录

        本文链接:https://www.haomeiwen.com/subject/wuuaxftx.html