LeetCode学习记录(1-3)
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)相关推荐
- leetcode学习记录5——53.最大子序和
leetcode学习记录 leetcode学习记录五 最大子序和 解题思路 代码 leetcode学习记录五 最大子序和 难度:简单 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数 ...
- leetcode学习记录_贪心
贪心的特点就是不断求得局部最优解 然后用局部最优解求得全局最优解 55. 跳跃游戏 给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 . 数组中的每个元素代表你在该位置可以跳跃的最大长度 ...
- leetcode学习记录_二叉树_树
二叉搜索树(二叉排序树.二叉查找树) 二叉树值一种特殊的二叉树,它要么是空树,要么满足以下条件: 若左子树存在,则左子树上的所有结点都一定小于根结点,反之,右子树的所有结点都一定大于根节点,并且除了根 ...
- leetcode学习记录_罗马数字
13. 罗马数字转整数 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 ...
- leetcode学习记录-罗马数字转整数
题目 13.罗马数字转整数 题目描述 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, ...
- LeetCode学习-查找2-合并版
LeetCode学习-查找 几个基本数据结构 一,查找表 349,求公共元素 242,判断两字符串是否字母相同 202,快乐数问题 290,模式匹配(需理清思路) 205,同构 451,对出现频率排序 ...
- python做实时温度曲线图_Python学习记录 - matplotlib绘制温度变化折线图
Python学习记录 - matplotlib绘制温度变化折线图 Python学习记录 - matplotlib绘制温度变化折线图 题目:列表a表示10点到12点每一分钟的气温,累计为2个小时,绘制折 ...
- Leetcode学习之动态规划
动态规划学习内容 1. 动态规划理论基础 什么是动态规划 动态规划的解题步骤 动态规划应该如何debug 2. 斐波那契数 思路 3. 爬楼梯 思路 4. 使用最小关系爬楼梯 思路 5. 不同路径 思 ...
- 动态规划学习记录:题型/思路汇总
#动态规划学习记录# 动态规划学习记录:题型/思路汇总 一维数组动态规划 1.爬楼梯 2.数硬币 3.最大子序和 4.区域和检索 - 数组不可变 5.整数拆分 6.打家劫舍 7.打家劫舍II 8.解码 ...
- Pytorch学习记录-torchtext和Pytorch的实例( 使用神经网络训练Seq2Seq代码)
Pytorch学习记录-torchtext和Pytorch的实例1 0. PyTorch Seq2Seq项目介绍 1. 使用神经网络训练Seq2Seq 1.1 简介,对论文中公式的解读 1.2 数据预 ...
最新文章
- sqlserver在linux数据备份,SQLServer数据库之sqlserver for linux自动备份数据库脚本
- html5仿浏览器,前端H5-仿QQ浏览器for mac之动画效果(一)
- 解析ASP网页的执行顺序
- 2021年8月Web服务器排行榜:Nginx牛市上升
- 牛客网_PAT乙级_1020完美数列(25)【vector sort 最后一个测试用例超时】
- 在Java中给出的时间
- 产品经理应聘之感受漫谈
- 暴风影音CTO:暴风门事件给研发团队带来的启示
- Android Studio 录屏/电脑实时显示手机的画面
- android6.0获取通讯录权限
- Comet OJ - 2019国庆欢乐赛 D1 入学考试 (简单版)
- 层(Overlays)
- 安卓adb截屏java_Android 截屏的各种骚操作
- Spring AOP中pointcut expression表达式解析 及匹配多个条件
- 代码没写完,哪里有脸睡觉!程序员专属壁纸 3.0 版
- android contentprovider作用,Android ContentProvider基本使用
- 第九章 SQL查询数据库(一)
- 用Blender设计插画?3D艺术家又开始秀啦!
- 【HttpClient4】 基本操作
- O2O创业指导手册:2014年最全国内O2O创业企业名录,全行业!