- 时间:2022-09-09 11:04 编辑: 来源: 阅读:299
- 扫一扫,手机访问
摘要:算法:给定一个整数数组和一个目标值,找出数组中作为目标值的两个数。
<免费源码>
给定一个整数数组和一个目标值,找出数组中的两个数和目标值。 可以假设每个输入只对应一个答案,相同的元素不能重用。 示例:给定nums = [2,7,11,15],target = 9因为nums[0]+nums[1] = 2+7 = 9,所以返回[0,1] topic的原始地址:https://leetcode-cn.com/explore/interview/card/card /* * *首先想到的一定是取第一个元素,依次相加,看能不能等于目标值,*然后是第二个,第三个...*/public int [] twosum1 (int [] nums,int target){ for(int I = 0;我& ltnums . length-1;i++){ for(int j = I+1;j & ltnums.lengthj++){ if(nums[j]= = target-nums[I]){ return new int[]{ I,j };} } }返回新的int[]{0,0 };}/* * *以值为键,下标为值*遍历数组,判断映射是否可以包含目标值——当前值。*如果有,把它放到映射中* *所以以后写代码。如果有双层for循环,首先考虑是否用map替换一层*/public int [] two sum2 (int [] nums,int target) {map。Integer,Integer & gtmap = new HashMap & lt& gt();for(int I = 0;我& ltnums.lengthi++){ if(map . contains key(target-nums[I])} { return new int[]{ map . get(target-nums[I]),I };} map.put(nums[i],I);}返回new int[]{0,0 };}这个好像有点简单。如果你觉得内容不错,可以关注我。期待与你相遇,共同成长!