第一天
感觉到自己的不足啊,感觉写写博客把想法写到纸面上才好
这些天看了Python 感觉语言不仅是工具 用一门合适的语言去编写代码有的时候会有神奇的效果- - 于是找个leetcode oj 刷刷题 把想法实现出来
做一个以后的规划吧
- 学习markdown语法,每天用markdown写博文,记录每天学的东西
- 学习和使用git 争取做到每日一推
每天刷1-2道 leetcode 题 然后把代码弄上来
今天第一题,leet oj 001 给一个list 和一个 target 找到list中相加等于target 的两个数的下标(默认存在一对)最开始感觉挺简单暴力了= = 我还是太肤浅了啊 然后用了 词典 过了。。 查了下Python词典查找的复杂度 说是哈希实现的 然后O(1) 感觉不稳定呢。。 暴力的代码就不贴了 把ac的代码贴上来
class Solution:
# @param {integer[]} nums
# @param {integer} target
# @return {integer[]}
def twoSum(self, nums, target):
mark = {}
for index,data in enumerate(nums,1):
temp = target - data
i = mark.get(temp,-1)
if i>0:
return i,index
mark[data] = index
- 然后第二题
链表倒序表示的2组数字
#
Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 0 -> 8
类似这种 求和 比较简单的 但是写的比较乱 希望以后有改正吧
代码:
class Solution:
# @param {ListNode} l1
# @param {ListNode} l2
# @return {ListNode}
def addTwoNumbers(self, l1, l2):
next = 0
temp = l1.val + l2.val
l1 = l1.next
l2 = l2.next
if temp >=10:
temp = temp - 10
next = 1
l = ListNode(temp)
res = l
while l1!=None or l2!=None:
if l1 == None:
l.next = l2
l.next.val = l.next.val + next
l=l.next
while l.val == 10:
l.val = 0
if l.next==None:
l.next= ListNode(0)
l = l.next
l.val = l.val + 1
return res
if l2 == None:
l.next = l1
l.next.val = l.next.val + next
l=l.next
while l.val == 10:
l.val = 0
if l.next==None:
l.next= ListNode(0)
l = l.next
l.val = l.val + 1
return res
temp = l1.val + l2.val + next
l1 = l1.next
l2 = l2.next
next = 0
if temp >= 10:
temp = temp - 10
next = 1
l.next = ListNode(temp)
l=l.next
if next ==1:
l.next = ListNode(1)
return res
贵在坚持!!
Ps: markdownpad2的代码块有问题啊 。。 明天研究下。。