每天一例python程式0608

2021-08-20 13:13:54 字數 1520 閱讀 5916

題目

給定乙個整數陣列和乙個目標值,找出陣列中和為目標值的兩個數。

你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。

**----leetcode

示例:

給定 nums = [2, 7, 11, 15], target = 9

因為 nums[0] + nums[1] = 2 + 7 = 9

所以返回 [0, 1]

思路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...