最近在学算法决定开始刷leetcode,由于也在学java所以决定过程中用java和python两种语言解决,每道题只给自己10分钟时间,优先考虑解决方案,如果不是最优解二刷时候在加长时间想答案。如果10分钟解不出来就去网上找思路。
第一题:
给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。
你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。
示例:
给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1]
看到这题思路首先就是遍历两次数组,将相减的结果在第二次遍历中进行对比。
python:
class Solution(object):
def twoSum(self, nums, target):
for i in range(len(nums)):
j = target - nums[i]
for k in range(len(nums)):
if nums[k] == j and k != i:
list = [i,k]
return list
else:
pass
java:
class Solution {
public int[] twoSum(int[] nums, int target) {
int t = nums.length;
int[] fin = new int[2];
for(int i = 0 ; i < t ; i++)
{
int j = target - nums[i];
for(int k = 0 ; k < t; k++)
{
if(j == nums[k] && k != i)
{
fin[0] = i;
fin[1] = k;
return fin;
}
}
}
return fin;
}
}