刷題之給定一個整數數組 nums 和一個目標值 taget,請你在該數組中找出和為目標值的那 兩個 整數


 今天下午,看了一會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))

執行打印結果:

 

 

 

那么我來看下給定的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()

 

 

 

測試代碼運行后,我們發現了其中的錯誤。其實我們沒有對入參進行控制,隨后我們對代碼進行升級,

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

運行結果

 

 

 

所以在測試過程中,我們一定要對我們的代碼進行一定的單元測試。單元測試進行的越早,我們的問題發現的越早。寫好的代碼自己一定要進行測試。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM