LeetCode中国官网一个用来刷编程题的网站,收录了很多面试题。感觉还是学习到很多。记录一下思路。代码还是要多敲。

建议编写完后直接在LeetCode上运行和提交。提交时会有不同的测试用例来测试代码。可以查遗补漏。

1)两数之和

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。

你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。

示例:

给定 nums = [2, 7, 11, 15], target = 9

因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

最简单的直接两个循环暴力解决。

class Solution(object):
def twoSum(self, nums, target):
num = len(nums)
for i in range(num):
for j in range(i+1,num):
if nums[i] + nums[j] == target:
return [i,j] if __name__ == '__main__':
n = [3,2,4]
tar = 6
s = Solution()
a = s.twoSum(n,tar)
print(a)

没有啥可多说的,就是第一层循环所有,第二层从第一层所在的下标后一位开始。然后相加看是不是等于某个值,然后返回下标。在LeetCode提交时候,提示用时4172ms

之后看到官方和别人的解题思路,可以使用字典来提高效率class Solution(object):

def twoSum(self, nums, target):

        nub = len(nums)
dict1 = {}
for i in range(nub):
value = target - nums[i]
if value in dict1:
return [dict1[value],i]
dict1[nums[i]] = i if __name__ == '__main__':
n = [3,2,4]
tar = 6
s = Solution()
a = s.twoSum(n,tar)
print(a)

思路是将数组的值当做字典的键,数组的下标当做字典键。循环 i 就是数组当前值得下标。求合值减去当前值,算出另一个数的值。如果这个值是字典里存在的键。就返回键在字典中对应的值,和 i 。最后是将数组的值添加到字典里面。用时56ms

需要注意的是,一定要先判断一轮,再将值写入字典。以上图为例,如果先写入字典。下标0的时候,值是3。另一个需要的数也是3.这时候去字典里找第一个就是3.输出就会是[0, 0] ,但是正确的应该是[1, 2]。

Python3学习笔记37-LeetCode刷题的更多相关文章

  1. Python入门学习笔记2:刷题

    1) LeetCode 强的面试题和算法题,要求也比较高,很多国内外的码农在上面刷题.难度从easy到hard都有,而且覆盖面极广,需要你的综合实力去答题. 最简单的题比如字符串的处理有的时候也要用到 ...

  2. Leetcode刷题记录(python3)

    Leetcode刷题记录(python3) 顺序刷题 1~5 ---1.两数之和 ---2.两数相加 ---3. 无重复字符的最长子串 ---4.寻找两个有序数组的中位数 ---5.最长回文子串 6- ...

  3. LeetCode刷题笔记和想法(C++)

    主要用于记录在LeetCode刷题的过程中学习到的一些思想和自己的想法,希望通过leetcode提升自己的编程素养 :p 高效leetcode刷题小诀窍(这只是目前对我自己而言的小方法,之后会根据自己 ...

  4. LeetCode刷题模板(1):《我要打10个》之二分法

    Author       :  叨陪鲤 Email         : vip_13031075266@163.com Date          : 2021.01.23 Copyright : 未 ...

  5. LeetCode刷题专栏第一篇--思维导图&时间安排

    昨天是元宵节,过完元宵节相当于这个年正式过完了.不知道大家有没有投入继续投入紧张的学习工作中.年前我想开一个Leetcode刷题专栏,于是发了一个投票想了解大家的需求征集意见.投票于2019年2月1日 ...

  6. C#LeetCode刷题-二叉搜索树

    二叉搜索树篇 # 题名 刷题 通过率 难度 220 存在重复元素 III   19.3% 中等 315 计算右侧小于当前元素的个数   31.9% 困难 327 区间和的个数   29.5% 困难 3 ...

  7. C#LeetCode刷题-字典树

    字典树篇 # 题名 刷题 通过率 难度 208 实现 Trie (前缀树)   48.6% 中等 211 添加与搜索单词 - 数据结构设计   39.9% 中等 212 单词搜索 II   27.9% ...

  8. C#LeetCode刷题-树

    树篇 # 题名 刷题 通过率 难度 94 二叉树的中序遍历   61.6% 中等 95 不同的二叉搜索树 II   43.4% 中等 96 不同的二叉搜索树   51.6% 中等 98 验证二叉搜索树 ...

  9. C#LeetCode刷题-栈

    栈篇 # 题名 刷题 通过率 难度 20 有效的括号 C#LeetCode刷题之#20-有效的括号(Valid Parentheses) 33.0% 简单 42 接雨水   35.6% 困难 71 简 ...

  10. C#LeetCode刷题-动态规划

    动态规划篇 # 题名 刷题 通过率 难度 5 最长回文子串   22.4% 中等 10 正则表达式匹配   18.8% 困难 32 最长有效括号   23.3% 困难 44 通配符匹配   17.7% ...

随机推荐

  1. 读rfc HTTP 协议

    这是IETF ( 国际互联网工程任务组(The Internet Engineering Task Force,简称 IETF))制定的协议之一. 互联网工程任务组,成立于1985年底,是全球互联网最 ...

  2. CG-CTF 南邮 综合题2

    个人网站 http://www.wjlshare.tk 0x00前言 主要考了三块 第一块是文件包含获取源码 第二块是通过sql绕过注入获取密码 第三块是三参数回调后门的利用 做这题的时候结合了别人的 ...

  3. SpringEl表达式解析

    应用场景: 1.用户日志 2.缓存处理 3........... import org.springframework.expression.EvaluationContext; import org ...

  4. 码云、coding拉取项目代码

    1.git init 2.git remote add origin "你的码云或coding项目地址(ssh或https)" 3.git pull origin master

  5. Linux磁盘文件系统与格式化实战(一)

    fdisk分区的实质: 用fdisk分区的实质,就是修改0磁头0磁道1扇区的前446字节之后的64字节的分区表信息. 问题:可以使用fdisk分区的磁盘大小必须小于2T,如果大于2T呢,分区就用par ...

  6. Pangu and Stones(HihoCoder-1636)(17北京OL)【区间DP】

    题意:有n堆石头,盘古每次可以选择连续的x堆合并,所需时间为x堆石头的数量之和,x∈[l,r],现在要求,能否将石头合并成一堆,如果能,最短时间是多少. 思路:(参考了ACM算法日常)DP[i][j] ...

  7. python-----模块【第一部分】-----

    一.hashlib(md5) import hashlib obj = hashlib.md5('dsfd'.encode('utf-8')) obj.update('123'.encode('utf ...

  8. Go-环境搭建-hello world-变量常量定义-函数使用基础

    目录 编程语言科普 常见语言的背景 go 为什么这么火? 环境搭建(很重要) ide 编辑器 注释 第一个程序 Hello world! 编译与执行 变量类型 数字类型 字符串类型 布尔类型 常量 函 ...

  9. python — 池

    1. 池 池分为:进程池.线程池 池:预先的开启固定个数的进程数/线程数,当任务来临的时候,直接提交给已经开好的进程 / 线程,让这个进程 / 线程去执行就可以了. 池节省了进程.线程的开启.关闭.切 ...

  10. Python运算符和编码

    Python运算符和编码 一.格式化输出 现在有以下需求,让⽤户输入name, age, job,hobby 然后输出如下所⽰: ----------info of dogfa---------- n ...