欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

刷题之给定一个整数数组 nums 和一个目标值 taget,请你在该数组中找出和为目标值的那 两个 整数

程序员文章站 2022-05-18 21:54:23
今天下午,看了一会github,想刷个题呢,就翻出来了刷点题提高自己的实际中的解决问题的能力,在面试的过程中,我们发现,其实很多时候,面试官 给我们的题,其实也是有一定的随机性的,所以我们要多刷更多的题。去发现问题。 题目: 你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元 ......

 今天下午,看了一会github,想刷个题呢,就翻出来了刷点题提高自己的实际中的解决问题的能力,在面试的过程中,我们发现,其实很多时候,面试官 给我们的题,其实也是有一定的随机性的,所以我们要多刷更多的题。去发现问题。

   

  题目:  

    给定一个整数数组 nums 和一个目标值 taget,请你在该数组中找出和为目标值的那 两个 整数,
并返回他们的数组下标。

你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。

 

解析:

    实际这里就是给你的一个列表的数字,给你一个预期,让你返回

这个列表里面两个数字相加等于这个预期的数字的下标。

 

代码思路:

    1.直接用到两个for循环,去遍历这个list,

    2.一个for循环从第一个元素,一个for循环从减去这个元素的list里面去遍历

    3.然后去判断这个两个的元素相加的和是否等于预期的taget,如果等于,直接返回元素的下标。

4. 这里可能返回多个,我们默认选择第一组。

 

实现代码:

 

class solution():
def twosun(self,nums,target):
for i in range(len(nums)):
for j in range(len(nums)):
if nums[i]+nums[j] ==target and i !=j:
return [i,j]

 

那么我们先来个简单的测试,去测试一下:

if __name__=="__main__":
solution=solution()
print(solution.twosun([1,2,3,4,5,6],5))

执行打印结果:

刷题之给定一个整数数组 nums 和一个目标值 taget,请你在该数组中找出和为目标值的那 两个 整数

 

 

 

那么我来看下给定的list里面是否是对的。

我们知道python的list是从0开始计数的,即0的下标的元素就是list的里面第一个元素,然后一次类推。

我们可以看到下标是0 和3的元素分别是1和4,1+4=5

符合预期,认为代码通过。

 

下面我们做下单元测试:

class testcase(unittest.testcase):
def setup(self):
pass
def teardown(self) -> none:
pass
def testcaseone(self):
self.solution = solution()
result=self.solution.twosun([1, 2, 3, 4, 5, 6], 5)
self.assertequal(result,[0,3])
def testcasetow(self):
self.solution = solution()
result = self.solution.twosun(["1", 2, 3, 4, "5", 6], "5")
self.assertequal(result, [0, 3])
def testcasethree(self):
self.solution = solution()
result = self.solution.twosun(["a", 2, 3, 4, "b", 6], "ab")
self.assertequal(result, false)
if __name__=="__main__":

unittest.main()

 刷题之给定一个整数数组 nums 和一个目标值 taget,请你在该数组中找出和为目标值的那 两个 整数

 

 

测试代码运行后,我们发现了其中的错误。其实我们没有对入参进行控制,随后我们对代码进行升级,

class solution():
def twosun(self,nums:list,target:int):
for i in range(len(nums)):
for j in range(len(nums)-i):
try:
if nums[i]+nums[j] ==target and i !=j:
return [i,j]
except:
return false

运行结果

刷题之给定一个整数数组 nums 和一个目标值 taget,请你在该数组中找出和为目标值的那 两个 整数

 

 

 

所以在测试过程中,我们一定要对我们的代码进行一定的单元测试。单元测试进行的越早,我们的问题发现的越早。写好的代码自己一定要进行测试。

 

推荐阅读