题目:
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
你可以按任意顺序返回答案。
比如 :
输入[3,2,4],6 则返回 [1,2];(2+4 = 6)
输入[1,2,3,7,5],6 则返回 [0,4];(1+5 =6)
两种方法是一样的,就写法不同,二次循环原数组,当前值去加当前值之后值等于目标值,就可以返回二者下标了
(二)
- /**
- * @param {number[]} nums
- * @param {number} target
- * @return {number[]}
- */
- var twoSum = function(nums, target) {
- for(let i = 0; i < nums.length-1; i++){
- for(let j = i+1; j < nums.length; j++){
- if(nums[i]+nums[j] == target){
- return[i,j]
- }
- }
- }
- };
(一)
- /**
- * @param {number[]} nums
- * @param {number} target
- * @return {number[]}
- */
- var twoSum = function(nums, target) {
- // if(nums.length < 2)return;
- // 先设置一个空数组 hRes,存放结果
- let hRes = [];
- // 循环原数组
- for(let i = 0; i< nums.length; i++){
- // 截取原数组当前循环值之后字符串得到未循环到的一个新数组 hNum
- // 注意 要深拷贝原数组再截取
- let hNum = JSON.parse(JSON.stringify(nums)).splice(i+1,nums.length);
- // 遍历新数组
- hNum.forEach((val,index,arr) => {
- if(nums[i]+val == target){
- hRes.push(i);
- hRes.push(i+index+1);
- }
- })
- }
- // [...new Set(hRes)] 去重
- return [...new Set(hRes)];
- };
比较麻烦,思想一样,换种写法吧,待会儿再写
题目链接:https://leetcode.cn/problems/two-sum