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].
网友评论