python find方法的复杂度_为什么leetcode中的python解法过于pythonic,而忽略了算法题主要关注的复杂度问题?...

leetcode中有很多python one-liners,大致可分为如下几种。

1,简单明了型

这种类型的基本写过一定时间python的人都能想得出来,因为会用到一些python特有的性质,主要也是针对相对简单的问题,写出来不会给人一种装逼的感觉,比如下面几种。contains duplicate

def containsDuplicate(nums):

return len(nums) != len(set(nums))palindrome of a string

def findPalindrome(string):

return string[::-1]

2,简单装逼型

此类型需要熟练使用python一些库,写出来后有一定的pythonic逼格,但是解答的问题也通常较简单。single number

def singleNumber(nums):

return reduce(lambda x, y: x ^ y, nums)length of last word

def lengthOfLastWord(s):

return len(s.strip().split(" ")[-1])

3,粗暴装逼型

这种就像题注说的,牺牲了一定的时间空间复杂度,经常会把字符串cast成整数或者整数cast成字符串,但是硬是达到了pythonic的效果。plus one (input是一个数组,每个数表示一位数)

def plusOne(digits):

return [int(i) for i in str(int("".join(map(str, digits)))+1)]add binary

def addBinary(a, b):

bin(int(a, 2) + int(b, 2))[2:]

4,朴实炫技型

大家都看得懂,没有过多调用python的包包,逻辑也和在别的语言一样,但在python就是能一行完成。quicksort

def quicksort(nums):

return if len(nums) == 0 else quicksort([num for num in nums[1:] if num < nums[0]]) + [nums[0]] + quicksort([num for num in nums[1:] if num >= nums[0]])

5,大神炫技型

之前网上看到的,非leetcode,把python特性运用到了极致写出高校代码。getContourPoint, 比如[1,2,3,4,5,6] -> [(1,2,3),(4,5,6)]

def getContourPoint(nums):

return zip(*[iter(nums)]*3)

6,学神型

数据科学机器学习调包解体的,比如andrew ng解答cocktail party问题的python写法

W,s,v = np.linalg.svd(np.dot((np.tile(sum(x*x,0),(x.shape[0],1))*x),x.T))

面试中个人觉得2和4都是能接受的,如果面试官不了解python的话可以解释下syntax就好了。5和6就真的是大神了,复杂度神么的都是浮云。1和3这种捷径在面试中一般人不大能接受。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值