日誌 做leetcode演算法題

2021-09-02 08:14:58 字數 1600 閱讀 5977

從今天開始(2018.12.1),每天寫一道leetcode演算法題,寫c++和python兩種語言的。不是對口專業,在程式設計方面功底也不強,之前也啃過程式設計的書,但是感覺一切都在實踐裡,光啃書不行。看大佬們是怎麼想的,怎麼優化演算法的。希望藉此了解一些資料結構和演算法設計的基礎知識。望天長日久,有所長進。每天在這裡更新記錄,自我監督!

1.  two sum

class solution   }}

return result;

} };

class solution

lookup.insert(pair(nums[i], i));

}}    

};少宣告變數,省時。

python

同樣演算法偏慢

class solution:

def twosum(self, nums, target):

nums_dict=dict(zip(nums,range(len(nums))))  將物件中對應的元素打包成乙個個元組,然後返回由這些元組組成的列表。

for i in range(len(nums)):

complement=target-nums[i]

if complement in nums_dict.keys() and nums_dict[complement]!=i:  返回所有鍵值,可用list轉化為列表

return([i,nums_dict[complement]])

2.add data

class solution

else

overload=0;

pcurrent->next=new listnode(sum);//將當前的值賦給第一位,也就是個位數;

pcurrent=pcurrent->next;//當前的位置往下進行;也就是十位數

if(l1) l1=l1->next;//l1鍊錶往後遍歷;

if(l2) l2=l2->next;//l2鍊錶往後遍歷;

}return phead->next;  }};

class solution:

def addtwonumbers(self, l1, l2):

p=result=listnode (-1)

temp=0

while l1 and l2:#當l1和l2屬於同長度

部分sum=l1.val+l2.val+temp

temp=int(sum/10)

ptemp=listnode(sum%10)

p.next=ptemp

p=p.next

l1=l1.next

l2=l2.next

temp1=l1 or l2

while temp1:#當l1和l2屬於不同長度部分

sum=temp1.val+temp

temp=int(sum/10)

ptemp=listnode(sum%10)

p.next=ptemp

p=p.next

temp1=temp1.next

if temp:

p.next=listnode(temp)

return result.next

LeetCode 演算法題

給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 ...

Leetcode演算法題

56.合併區間 給出乙個區間的集合,請合併所有重疊的區間。示例 1 輸入 intervals 1,3 2,6 8,10 15,18 輸出 1,6 8,10 15,18 解釋 區間 1,3 和 2,6 重疊,將它們合併為 1,6 示例 2 輸入 intervals 1,4 4,5 輸出 1,5 解釋 ...

Leetcode演算法題

20 有效的括號 題目描述 給定乙個只包括 的字串 s 判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。示例 示例 1 輸入 s 輸出 true 示例 2 輸入 s 輸出 true 示例 3 輸入 s 輸出 false 示例 4 輸入 s 輸出 fal...