力扣Leecode1.两数求和(20190924)

力扣Leecode1.两数求和(20190924)

学完python编程入门之后,一直想刷一下题,之后每天会坚持至少一道题,欢迎大神们的指正。

题目描述

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。
示例:

给定 nums = [2, 7, 11, 15], target = 9

因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

思路

(1)输入一个数组,根据len()得到数组长度。
(2)通过range(0,len(sums)-1)来遍历数组的索引。
#因为python索引是从0开始的,所以要0开始,到len-1结束
(3)两个for循环嵌套,遍历两次,最后通过if判断sums[i]==sums[j] and i!=j
#如果输入[1,2,3,4],target=2,可能会是1+1,所以要加上i!=j
(4)最后返回两个索引。

代码1#定义函数

def twoSum(nums,target):

    for i in range(0,len(nums)-1):
        for j in range(0,len(nums)-1):
            if nums[i]+nums[j]==target and i!=j:
                return [i,j]

nums=[2,7,11,15]
target=9

print(twoSum(nums,target))

输出:[0,1]

代码2#定义类

class Solution():
    def __init__(self, nums, target):
        self.nums = nums
        self.target = target

    def answer(self):
        for i in range(0, len(self.nums) - 1):
            for j in range(0, len(self.nums) - 1):
                if self.nums[i] + self.nums[j] == self.target and i != j:
                    return [i, j]


input_output = Solution([2, 7, 11, 15],9)

print(Solution.answer(input_output))
print(input_output.answer())

输出:[0,1]
[0,1]

易错点

1.在调用类中的函数之前必须实例化对象,如果通过nums=[…],target=9分开实例化则会报错。

input_output = Solution([2, 7, 11, 15],9)

2.类名.类中的函数名(实例化对象)

Solution.answer(input_output)

3.实例化对象.类中的函数名()
如果函数是answer(self),则调用时直接answer(),因为类中的__init__(self,…)会将self传给answer。
如果函数是answer(self,name),则调用时需要answer(name),self同上。

c++代码:

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        for (int i = 0 ; i < int(size(nums)) ; i++)
        {
            for (int j = 0 ; j < int(size(nums)) ; j++)
            {
                if (nums[i] + nums[j] == target && i != j)
                {
                    return {i , j};
                }
            }
        }
        return {};

    }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值