題目
給定乙個整數陣列和乙個目標值,找出陣列中和為目標值的兩個數。
你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。
**----leetcode
示例:
給定 nums = [2, 7, 11, 15], target = 9思路1:因為 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
給出這個題目,我思考後發現就是乙個變相排序的問題,在迴圈時,增加判斷條件,當滿足條件是,則退出。
def twosum(nums,target):
res =
for item1 in range(0,len(nums)):
for item2 in range(item1+1,len(nums)):
if nums[item1] + nums[item2] == target:
return [item1,item2]
break
寫乙個簡單的氣泡排序,功能可以實現,但是提交時,提示超時。這麼寫確實還有些複雜。
思路2:
逆向思維,不是直接兩個數字相加是否是target, 而是判斷 taeget-nums[item]是否是nums中元素。
def twosum(nums,target):
for item in nums:
if target - item in nums:
print ([nums.index(item),nums.index(target - item)])
break
常規的可以實現,但是nums = [2,2],target = 4 則出現[0, 0]。
def twosum(self, nums, target):
k = 0
for i in nums:
k += 1
if target - i in nums[k:]:
return[nums.index(i), k+nums[k:].index(target - i)]
這個程式可以正常的實現功能。
思路3:
enumerate() 函式用於將乙個可遍歷的資料物件(如列表、元組或字串)組合為乙個索引序列,同時列出資料和資料下標,一般用在 for 迴圈當中。
def twosum( nums, target):
for key,item in enumerate(nums):
key += 1
if target - item in nums[key:]:
return[key-1, key+nums[key:].index(target - item)]
和上乙個思路沒有本質的區別。只是實現方式不同。 每天一例python程式0614
題目 811.子網域名稱訪問計數 乙個 網域名稱,如 discuss.leetcode.com 包含了多個子網域名稱。作為頂級網域名稱,常用的有 com 下一級則有 leetcode.com 最低的一級為 discuss.leetcode.com 當我們訪問網域名稱 discuss.leetcode...
每天一模式 單例模式
一 單例模式是為了控制類只有乙個例項物件,通常在以下兩種情況需要考慮使用單例模式 1 業務邏輯的需求 2 效能的考慮 二 單例模式的機構圖 三 單例模式的幾種實現形式 1 形式一 public class singleton2 public static singleton2 getinstance...
Python的正則一例
悄悄打入公司內部ued的乙個python愛好者小眾群,前兩天一位牛人發了條訊息 小的測試題 re.split w test,test,test.返回什麼結果 一開始看,我倒沒注意w是大寫的,以為是小寫的w代表單詞字元 含下劃線 今天執行一看才發現是大寫的。在idle跑一下的結果如下 import r...