python listnode(-1)_python leetcode 1

博主开始刷LeetCode,并记录解题思路,目标在短时间内完成所有题目。目前分享了几个题目的解决方案,包括两数之和、两数相加、最长无重复字符子串等,部分题目使用自定义函数实现,如模拟izip_longest,同时追求高效的执行效率。
摘要由CSDN通过智能技术生成

开始刷 leetcode, 简单笔记下自己的答案, 目标十一结束之前搞定所有题目.

提高一个要求, 所有的答案执行效率必须要超过 90% 的 python 答题者.

1. Two Sum.

classSolution(object):deftwoSum(self, nums, target):""":type nums: List[int]

:type target: int

:rtype: List[int]"""tmp=[]for i, j inenumerate(nums):

tmp.append((i, j))for k, item inenumerate(tmp):

l, m=itemfor o, p in tmp[k+1:]:if m + p ==target:return sorted((l, o))

runtime beats: 21.30%

优化1

classSolution(object):deftwoSum(self, nums, target):""":type nums: List[int]

:type target: int

:rtype: List[int]"""

for i, j inenumerate(nums):for k, l in enumerate(nums[i+1:]):if j + l ==target:return (i, k + i + 1)

runtime beats: 21.97%

还是不行, 肯定还有别的办法.

2. Add Two Numbers

#Definition for singly-linked list.#class ListNode(object):#def __init__(self, x):#self.val = x#self.next = None

classSolution(object):defaddTwoNumbers(self, l1, l2):""":type l1: ListNode

:type l2: ListNode

:rtype: ListNode"""

defgen(listnode):yieldlistnode.valwhilelistnode.next:

listnode=listnode.nextyieldlistnode.valdefizip_longest(gen1, gen2):

flag1, flag2=True, Truetry:

i=gen1.next()except:

i=0

flag1=Falsetry:

j=gen2.next()except:

j=0

flag2=Falseyieldi, jwhile flag1 orflag2:try:

i=gen1.next()except:

i=0

flag1=Falsetry:

j=gen2.next()except:

j=0

flag2=Falseif flag1 orflag2:yieldi, j

result=[]

tmp=0for i, j inizip_longest(gen(l1), gen(l2)):

sum= i + j +tmpif sum < 10:

tmp=0

result.append(sum)else:

tmp= 1result.append(sum- 10)iftmp:

result.append(tmp)return result

runtime beats: 95.07%

用 python 刷题是有点不要脸了, 本题的关键是 itertools.izip_longest, 但是平台说不认识, 于是就自己攒了一个极端丑陋的版本. 有时间回头再优化.

3. Longest Substring Without Repeating Characters

classSolution(object):deflengthOfLongestSubstring(self, s):""":type s: str

:rtype: int"""

if nots:return0

tmp=set(s)

length_tmp=len(tmp)

length=len(s)while length_tmp >0:for i in xrange(length - length_tmp + 1):

t= s[i:length_tmp +i]if len(set(t))

if set(t) <=tmp:returnlength_tmp

length_tmp-=

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值