两数之和
题目描述:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
链接:https://leetcode-cn.com/problems/two-sum/
解法:
方法一:暴力法
var twoSum = function(nums, target) {for(let i=0,len=nums.length;i<len;i++){for(let j=i+1,len=nums.length;j<len;j++){if(nums[i]+nums[j]===target){return [i,j]}}}return []};
方法二:indexof法
var twoSum = function(nums, target) {for(let i=0;i<nums.length;i++){const restIndex=nums.indexOf(target-nums[i])if(restIndex!==-1 && restIndex!==i){return [i,restIndex]}}return []};
方法三:哈希表
var twoSum = function(nums, target) {const hashMap=new Map()for(const key in nums){const restIndex=target-nums[key]if(hashMap.has(restIndex)){return [key,hashMap.get(restIndex)]}else{hashMap.set(nums[key],key)}}return []};
三数之和(TODO)
题目描述:给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。
存在重复元素
给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 ,返回 true ;如果数组中每个元素互不相同,返回 false 。
链接:https://leetcode-cn.com/problems/contains-duplicate/
解法:
方法一:sort+遍历
var containsDuplicate = function(nums) {nums.sort((a,b)=>a-b)for(let i=0;i<nums.length;i++){if(nums[i]===nums[i+1]){return true}}return false};
方法二:哈希表
var containsDuplicate = function(nums) {const hashMap=new Map()for(const item of nums){if(hashMap.has(item)){return true}else{hashMap.set(item,1)}}return false};
