從今天開始(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...