男友教我学算法(一) Two Sum

最近某人不知是中了什么魔,在LeetCode网站刷算法题,成绩已经很不错了,估计很有成就感,于是一直在我耳边叨叨,说叫我去学习算法,锻炼思维,说的我都耳朵起茧子了。
哎呀,没办法,谁叫我笨呢,于是乎,抱着试一试的态度去网站看了一下,妈呀,全英文……瞬间想放弃。
“什么??就这点英文你就想放弃了?”
“我……”
“这么简单的英文看不懂,你还能干啥,好好做题,顺便还能提高你英语阅读能力呢!!”
“好吧好吧”

于是我就在他的指导下完成了第一道最简单的算法题,规定我一周一道题,难点的两周一题;

下面我就介绍一下我做的第一道算法题,原题如下‘在这里插入图片描述

Given an array of integers, return indices of the two numbers such that they add up to a specific target.

You may assume that each input would have exactly one solution, and you may not use the same element twice.

Example:

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

Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].

此题打大意就是,给定一个整数列表,再给定一个目标值,找出列表中两个值相加等于目标值的序列,并返回该序列的下标;
左边是题目,右边是你的答案,该网站默认是C++语言,你可以自己选择擅长的语言去写,人家已经创建了类,你只需要补充函数就好了;

Ok,先分析一下这个题目:
1、首先我们想到的问题点是两两相加,相加的话就要用到循环;
2、想到循环,那我们就要看看循环几层,根据题目,我想到最笨的方法就是:
注意:这里的下标都是从0开始的,所以再返回的时候要注意
在这里插入图片描述
源码如下:

class Solution(object):
  def twoSum(self, nums, target):
    for i,v1 in enumerate(nums):
      for j,v2 in enumerate(nums[i+1:]):
        if v1+v2 == target:
          return [i,i+j+1]
nums = [2, 7, 11, 15]
target = 9
sum = Solution()
print(sum.twoSum(nums,target))
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值