目录
解法1:直接两层for循环,遍历查看所有数组元素相加和的情况,若与目标值相等则返回
给定一个数组和一个目标值,从数组中找到两个数字相加等于目标值,并且输出两个数字的下标
思路:通过输出两个数字的下标我们需要返回两个值,但是return 只能返回一个值,所以我们需要返回一个数组(java中可以返回数组,在c/c++中,只能通过返回指针来解决或者传址来解决)
解法1:直接两层for循环,遍历查看所有数组元素相加和的情况,若与目标值相等则返回
class Solution {
public int[] twoSum(int[] nums, int target) {
int[] ans=new int[2];//存放需要输出的下标
for(int i=0;i<nums.length;i++){
for(int j=i+1;j<nums.length;j++){
if(nums[i]+nums[j]==target){
ans[0]=i;
ans[1]=j;
return ans;
}
}
}
return ans;
}
}
第二个for循环里面的内容也可以写成
for(int j=i+1;j<nums.length;j++){
int temp=target-nums[i];
if(temp==nums[j]){
ans[0]=i;
ans[1]=j;
return ans;
}
}
时间复杂度:两层for循环 O(n^2)
空间复杂度:开辟了一个长度为2的数组 O(1)