华为机考攻略(python)--入门题【5题】(第二题排列組合:NC61两数之和)

57 篇文章 4 订阅

系列文章目录


前言

一、排列組合:NC61两数之和

描述: 给出一个整型数组numbers和一个目标值target,请在数组中找出两个加起来等于目标值的数的下标,
返回的下标按升序排列(注:返回的数组下标从1算起,保证target一定可以由数组里面2个的数字相加得到)
数据范围: 2≤len(numbers)≤10**5
要求: 空间复杂度 O(n)O(n),时间复杂度 O(nlogn)O(nlogn)
示例1:
输入:[3,2,4],6
返回值:[2,3]
说明:因为2+4=6,而2的下标为2,4的下标为3,所以返回[2,3]
示例2:
输入:[20,70,110,150],90
返回值:[1,2]
说明:20+70=90

二、sound code

1.sound code 1

代码如下(示例):

from typing import List
class Solution:
    def twoSum(self,numbers:List[int],target:int)->List[int]:
        tm={}
        res=[]
        for i ,v in enumerate(numbers):
            if v in tm:
                res.append(tm[v]+1)
                res.append(i+1)
            else:
                tm[target-v] = i 
        return res
#下面为测试案例
if __name__ == '__main__':
    s = Solution()
    s.twoSum([3,2,4],6)
    print(s.twoSum([3,2,4],6))

2.sound code 2

代码如下(示例):

from typing import List
class Solution:
    def twoSum(self , numbers , target ):
        result = [0, 0]
        mp = {}
        for i in range(len(numbers)):
            mp[numbers[i]] = i
            for i in range(len(numbers)):
                if target - numbers[i] in mp:
                    if mp[target - numbers[i]] != i:
                        result[0] = i + 1
                        result[1] = mp[target - numbers[i]] + 1
                        return sorted(result)
        return sorted(result)
if __name__ == '__main__':
    s = Solution()
    s.twoSum([3,2,4],6)
    print(s.twoSum([3,2,4],6))

总结

分享:
有了坚定的理想、清晰的目标和正确的价值取向,就不会随波逐流,就不会在意别人的眼光以及世俗的标准。
理想是人们心中的一轮太阳,如果我们耽于瞻望和等待,理想就永远是一轮止于仰望的太阳。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

若竹之心

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值