老师您好,这个题可以给我点建议吗,

老师您好,这个题可以给我点建议吗,

老师你好,我最近去参加了一个比赛,题目是这样的:

https://img1.sycdn.imooc.com//climg/617a42b109ced79119020800.jpg

老师你好,思路我有了,但这题不加类就可以运行(图一),但我想把类加上(图二) 要怎么添加啊,我好像对类这个知识点还不够熟练...

https://img1.sycdn.imooc.com//climg/617a425209eebd1808420416.jpg

https://img1.sycdn.imooc.com//climg/617a41e90936390c12160843.jpg

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕凡 2021-10-28 15:21:06

同学,你好!

1、同学可以参考以下代码:

#定义类
class Solution:
    #初始化函数
    def __init__(self,nums:list,target:int):
        self.nums=nums
        self.target=target
    #定义函数
    def twoSum(self):
        #定义num1用于排序
        num1=1000
        #定义list1用于保存下标
        list1=[]
        for i in range(len(self.nums)):
            for j in range(i+1,len(self.nums)):
                #判断列表中两位数相加是否等于self.target和找出下标相加最小
                if self.nums[i]+self.nums[j]==self.target and i+j<num1:
                    #相加小于上个下标则对num1和list1重新赋值
                    num1=i+j
                    list1=[i,j]
        #如果list1为空则返回"No such two numbers"
        if len(list1)==0:
            return "No such two numbers"
        return list1
Solu=Solution([2,5,0,4,8,3,4,2,6],8)
print(Solu.twoSum())

2、同学注意任务要求中第三点:“如果存在两种或以上符合目标值target的情况,返回下标相加之和较小的数组”

3、类中如使用__init__函数,类对象实例化时会将参数传入__init__函数中,在__init__函数中用self.变量名将参数变为实例属性,类中的twoSum( )函数就可以直接使用self.变量名调用实例属性,同学复习一下课程,类的self:https://class.imooc.com/lesson/2094#mid=49698

祝学习愉快~

  • 提问者 TheCreamPuff #1

    谢谢老师 respect

    2021-10-28 16:50:30
  • 提问者 TheCreamPuff #2

    老师您好 这里的num1我没看懂 16行 18行

    2021-10-28 17:48:26
  • 好帮手慕凡 回复 提问者 TheCreamPuff #3

    同学,你好!

    1、任务要求中第三点:“如果存在两种或以上符合目标值target的情况,返回下标相加之和较小的数组”

    2、为了找到下标相加之和较小的数组,第十六行中,i和j都为下标,第一次满足条件时:num1=1000,i+j等于8小于1000,则num1=8,list1=[0,8]

    3、第二次满足条件:num1=8,i+j等于6小于8,则num1=6,list1=[1,5],最终返回的[1,5],满足任务要求中第三点,如下图:

    https://img1.sycdn.imooc.com//climg/617a73c609a6a64710320744.jpg

    祝学习愉快~

    2021-10-28 18:01:15
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师