1. 两数之和

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。
示例:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

解法1:暴力求解
两层循环嵌套,时间复杂度为O(n²)
代码展示:

python3class Solution:def twoSum(self, nums, target):""":type nums: List[int]:type target: int:rtype: List[int]"""for i in range(len(nums)):for j in range(i+1,len(nums)):if nums[i] + nums[j] == target:return [i,j]

解法2:hash_map(字典)
一层循环,通过枚举 x,来查找 9-x 是否在 map 中,如果不在,就将它存在map中,如果在,就说明找到了,返回即可,时间复杂度为O(n)

python3class Solution:def twoSum(self, nums, target):""":type nums: List[int]:type target: int:rtype: List[int]"""hash_map = dict()    for index, x in enumerate(nums):y = target - xif y in hash_map:return [hash_map[y], index]else:hash_map[x] = index

2.两数相加

给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。
如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。
您可以假设除了数字 0 之外,这两个数都不会以 0 开头。
示例:
输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
输出:7 -> 0 -> 8
原因:342 + 465 = 807

解法:1.判断两链表是否有空链表,若有,直接返回另一个链表。
2.若均不为空,则对应相加即可。
代码展示:

python3# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = Noneclass Solution:def addTwoNumbers(self, l1, l2):""":type l1: ListNode:type l2: ListNode:rtype: ListNode"""p = dummy = ListNode(-1)carry = 0while l1 and l2:p.next = ListNode(l1.val + l2.val + carry)carry =int(p.next.val/10) p.next.val %= 10p = p.nextl1 = l1.nextl2 = l2.nextres = l1 or l2while res:p.next = ListNode(res.val+ carry)carry = int(p.next.val/10)p.next.val %=10p = p.nextres = res.nextif carry:p.next = ListNode(1)return dummy.next

3.无重复字符的最长子串

给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。

示例 1:

输入: “abcabcbb”
输出: 3
解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。
示例 2:

输入: “bbbbb”
输出: 1
解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。
示例 3:

输入: “pwwkew”
输出: 3
解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。
请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是子串。

解法:遍历字符串中的每一个元素。用一个字典str_dict来存储不重复的字符和字符所在的下标。用变量start存储当前 最近重复字符所在的位置+1
代码展示:

python3class Solution:def lengthOfLongestSubstring(self, s):""":type s: str:rtype: int"""max_len = 0if s is None or len(s) == 0:return max_lenstr_dict = {}one_max = 0start = 0for i in range(len(s)):if s[i] in str_dict and str_dict[s[i]] >= start:start = str_dict[s[i]] + 1one_max = i - start + 1str_dict[s[i]] = imax_len = max(max_len, one_max)return max_len

LeetCode学习记录(1-3)相关推荐

  1. leetcode学习记录5——53.最大子序和

    leetcode学习记录 leetcode学习记录五 最大子序和 解题思路 代码 leetcode学习记录五 最大子序和 难度:简单 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数 ...

  2. leetcode学习记录_贪心

    贪心的特点就是不断求得局部最优解 然后用局部最优解求得全局最优解 55. 跳跃游戏 给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 . 数组中的每个元素代表你在该位置可以跳跃的最大长度 ...

  3. leetcode学习记录_二叉树_树

    二叉搜索树(二叉排序树.二叉查找树) 二叉树值一种特殊的二叉树,它要么是空树,要么满足以下条件: 若左子树存在,则左子树上的所有结点都一定小于根结点,反之,右子树的所有结点都一定大于根节点,并且除了根 ...

  4. leetcode学习记录_罗马数字

    13. 罗马数字转整数 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 ...

  5. leetcode学习记录-罗马数字转整数

    题目 13.罗马数字转整数 题目描述 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, ...

  6. LeetCode学习-查找2-合并版

    LeetCode学习-查找 几个基本数据结构 一,查找表 349,求公共元素 242,判断两字符串是否字母相同 202,快乐数问题 290,模式匹配(需理清思路) 205,同构 451,对出现频率排序 ...

  7. python做实时温度曲线图_Python学习记录 - matplotlib绘制温度变化折线图

    Python学习记录 - matplotlib绘制温度变化折线图 Python学习记录 - matplotlib绘制温度变化折线图 题目:列表a表示10点到12点每一分钟的气温,累计为2个小时,绘制折 ...

  8. Leetcode学习之动态规划

    动态规划学习内容 1. 动态规划理论基础 什么是动态规划 动态规划的解题步骤 动态规划应该如何debug 2. 斐波那契数 思路 3. 爬楼梯 思路 4. 使用最小关系爬楼梯 思路 5. 不同路径 思 ...

  9. 动态规划学习记录:题型/思路汇总

    #动态规划学习记录# 动态规划学习记录:题型/思路汇总 一维数组动态规划 1.爬楼梯 2.数硬币 3.最大子序和 4.区域和检索 - 数组不可变 5.整数拆分 6.打家劫舍 7.打家劫舍II 8.解码 ...

  10. Pytorch学习记录-torchtext和Pytorch的实例( 使用神经网络训练Seq2Seq代码)

    Pytorch学习记录-torchtext和Pytorch的实例1 0. PyTorch Seq2Seq项目介绍 1. 使用神经网络训练Seq2Seq 1.1 简介,对论文中公式的解读 1.2 数据预 ...

最新文章

  1. sqlserver在linux数据备份,SQLServer数据库之sqlserver for linux自动备份数据库脚本
  2. html5仿浏览器,前端H5-仿QQ浏览器for mac之动画效果(一)
  3. 解析ASP网页的执行顺序
  4. 2021年8月Web服务器排行榜:Nginx牛市上升
  5. 牛客网_PAT乙级_1020完美数列(25)【vector sort 最后一个测试用例超时】
  6. 在Java中给出的时间
  7. 产品经理应聘之感受漫谈
  8. 暴风影音CTO:暴风门事件给研发团队带来的启示
  9. Android Studio 录屏/电脑实时显示手机的画面
  10. android6.0获取通讯录权限
  11. Comet OJ - 2019国庆欢乐赛 D1 入学考试 (简单版)
  12. 层(Overlays)
  13. 安卓adb截屏java_Android 截屏的各种骚操作
  14. Spring AOP中pointcut expression表达式解析 及匹配多个条件
  15. 代码没写完,哪里有脸睡觉!程序员专属壁纸 3.0 版
  16. android contentprovider作用,Android ContentProvider基本使用
  17. 第九章 SQL查询数据库(一)
  18. 用Blender设计插画?3D艺术家又开始秀啦!
  19. 【HttpClient4】 基本操作
  20. O2O创业指导手册:2014年最全国内O2O创业企业名录,全行业!

热门文章

  1. JAVA:事件监听器之练习
  2. C# Windows服务自动安装与注册
  3. foreach写失效的问题
  4. spring---aop(10)---Spring AOP中AspectJ
  5. 最小生成树(Prim算法+Kruskal算法)
  6. ORA-00054:资源正忙,但指定以nowait方式
  7. Prism6下的MEF:添加Logger
  8. HALCON-FUZZY检测用于开关引脚测量
  9. Ansi,UTF8,Unicode,ASCII编码的差别
  10. absolute绝对定位的参考坐标和参考对象问题详解