算法很重要,但是每天也需要学学python,于是就想用python刷leetcode 的算法题,从第一题开始,从简单题开始零基础python刷leetcode之旅。

Two Sum

首先过一下python的一些基础知识,非小白请直接跳过

self

self 只有在类的方法中才会有,独立的函数或方法是不必带有self的。所以self名称不是必须的。另外,self也不是作为参数传递使用的,当然也不是关键词,只是约定成俗的写法,可以用a或b,甚至将self改为myself一样没有错误。

self指的是类实例对象本身(注意:不是类本身),相当于Java 的this

rang

>>> range(1,5) #代表从1到5(不包含5)

[1, 2, 3, 4]

>>> range(1,5,2) #代表从1到5,间隔2(不包含5)

[1, 3]

>>> range(5) #代表从0到5(不包含5)

[0, 1, 2, 3, 4]

append

>>>mylist = [1,2,0,'abc']

>>>mylist

[1, 2, 0, 'abc']

>>> mylist.append(4)

>>> mylist

[1, 2, 0, 'abc', 4]

时间戳

import time

import datetime

t = time.time()

print (t) #原始时间数据

print (int(t)) #秒级时间戳

print (int(round(t * 1000))) #毫秒级时间戳

nowTime = lambda:int(round(t * 1000))

print (nowTime()); #毫秒级时间戳,基于lambda

print (datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')) #日期格式化

str() 排序

str() 函数将对象转化为适于人阅读的形式。

>>>s = 'RUNOOB'

>>> str(s)

'RUNOOB'

>>> dict = {'runoob': 'runoob.com', 'google': 'google.com'};

>>> str(dict)

"{'google': 'google.com', 'runoob': 'runoob.com'}"

>>>

题目

输入一个数组和target,要在一个数组中找到两个数字,其和为target,从小到大输出数组中两个数字的位置。题目中假设有且仅有一个答案

方法一:暴力解决方法

import time

class Solution(object):

def twoSum(self, nums, target):

result = []

t1 = time.time()

for i in range(len(nums)):

for j in range(i+1, len(nums)):

if nums[i] + nums[j] == target:

result.append(i)

result.append(j)

print(time.time() - t1)

return result

最简单的循环嵌套,时间复杂度是O(n*n)。还有没有更好的算法吗?

方法二:字典

python字典的key-value原理属于hashtable的范畴,Python中最常用的数据类型之一,它是一个键值对的集合,字典通过键来索引,关联到相对的值,理论上它的查询复杂度是 O(1) :

首先,我们建立一个字典,d = {},字典的key是数组的值num(key一般是已知确定的值,所以用num),value是相应的位置, 然后只要满足 num 和 target - num都在字典里面则找到答案。这种方法的时间复杂度是(O(n))。

class Solution(object):

def twoSum(self, nums, target):

size = 0

d = {}

while size < len(nums):

#先把数组存到字典里面

if not nums[size] in d:#key不在字典里,进行赋值

d[nums[size]] = size

if target - nums[size] in d:# nums[size] 和 target - nums[size]都在字典里,即存在和为他人个体/的两个数

# 这里key 有可能指向同一个数(即 target - nums[size] = nums[size]时,他其实只有一个数)

if d[target - nums[size]] < d[nums[size]]:

# d的值从小到大输出

result = [d[target - nums[size]], d[nums[size]]]

return result

# 注意size = size + 1是和最外层的if平级的

size = size + 1

python刷leetcode_零基础python刷leetcode -- 1. Two Sum相关推荐

  1. python刷leetcode_零基础python刷leetcode -- 3. Longest Substring Without Repeating Characters

    算法很重要,但是每天也需要学学python,于是就想用python刷leetcode 的算法题,和我一起开始零基础python刷leetcode之旅吧.如有不对的地方,希望指正,万分感谢~~ 题目 最 ...

  2. 怎么自学python语言-python应用:零基础Python应该怎样学习呢?

    Python应该怎样学习呢?Python是一种跨平台的计算机程序设计语言.是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越多被用于独立 ...

  3. python自学路线-零基础Python学习路线,小白的进阶之路!

    近几年Python的受欢迎程度可谓是扶摇直上,当然了学习的人也是愈来愈多.一些学习Python的小白在学习初期,总希望能够得到一份Python学习路线图,小编经过多方汇总为大家汇总了一份Python学 ...

  4. 0基础学python要多久-零基础python培训需要学多久?

    目前市场上对于Python开发人才的需求与日递增,所以很多人都会选择去学Python.那如果是零基础又该如何学Python呢?小白学Python需要多久呢?传智播客根据以往的python培训经验给大家 ...

  5. 编程小白学python路线图_零基础Python学习路线图,让你少走弯路

    近几年Python的受欢迎程度可谓是扶摇直上,当然了学习的人也是愈来愈多.一些学习Python的小白在学习初期,总希望能够得到一份Python学习路线图,小编经过多方汇总为大家汇总了一份Python学 ...

  6. 有c语言基础学python要多久-零基础python培训需要学多久?

    目前市场上对于Python开发人才的需求与日递增,所以很多人都会选择去学Python.那如果是零基础又该如何学Python呢?小白学Python需要多久呢?传智播客根据以往的python培训经验给大家 ...

  7. 零基础python入门课程-零基础 Python 入门

    退款政策是如何规定的? 如果订阅,您可以获得 7 天免费试听,在此期间,您可以取消课程,无需支付任何罚金.在此之后,我们不会退款,但您可以随时取消订阅.请阅读我们完整的退款政策. 我可以只注册一门课程 ...

  8. python与h5开发_【Python】真零基础Python开发web

    Python开发web服务的优势是开发效率高,可能只需要java五分之一的代码量. Python搭建web服务有许多框架,本文介绍Django和bottle两个框架. Django 安装 首先,安装该 ...

  9. python货币兑换_零基础python作业--货币兑换的服务系统

    service_menu = {1:"1 . 人民币转换美元",2:"2 . 美元转换人民币",3:"3 . 人民币转换欧元",0:&quo ...

最新文章

  1. Mysql-cobar集群安装部署手册
  2. linux 进程阻塞 语句,MPI进程拓扑及非阻塞通信程序示例
  3. vsphere中虚机的cpu热插拔和内存热添加
  4. 【博客话题】我的linux心路历程
  5. shiro注销其他用户_Shiro实现互斥登录,并踢出登录用户功能。
  6. LeetCode 521. Longest Uncommon Subsequence I
  7. Tableview最后一行无法显示或者显示不全的问题IOS
  8. cacheinterceptor第二次访问没被调用_双分派访问者模式的前世今生
  9. 淘宝SOA框架dubbo学习(4)--参数验证
  10. 在Mac上如何设置自动解压下载的压缩文件?
  11. 拉普拉斯变换学习笔记
  12. pwm控制直流电机转速流程图_PWM控制直流电机调速
  13. 马尔可夫链(Markov chain)的基本认识
  14. UartAssist - 串口调试助手。
  15. 【Python/Pytorch - Bug】-- TypeError: type numpy.ndarray doesn‘t define _round method
  16. GitHub又放大招,Python版本的植物大战僵尸还能作弊玩!
  17. 社区中无法创建帖子chatter
  18. ABAQUS怎样导出部分节点的编号
  19. JSTL标签不起作用,JSTL标签直接输出表达式
  20. flutter 打开办公文件 pdf ppt xlsx 等等(仅Android)

热门文章

  1. MySQL版本升级到5.7.21
  2. HTML(一):HTML基本元素标签
  3. c语言是如何实现泛型链表
  4. ios开发网络学习九:NSURLSessionDownloadTask实现大文件下载
  5. nsis 固定到任务栏
  6. 防止浏览器拦截的新窗口打开链接方案
  7. swfupload添加上传进度条(转)
  8. SQL2005数据库连接
  9. 半监督主动式机器学习的技术优势:银行金融风控场景分析
  10. scrapy简单爬取图片