leetcode 题目的一些记录

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 题目的一些记录)