LeetCode学习记录(4-6)
4.寻找两个有序数组的中位数
给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。
请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。
你可以假设 nums1 和 nums2 不会同时为空。
示例 1:
nums1 = [1, 3]
nums2 = [2]
则中位数是 2.0
示例 2:
nums1 = [1, 2]
nums2 = [3, 4]
则中位数是 (2 + 3)/2 = 2.5
代码展示:
class Solution:def findMedianSortedArrays(self, nums1, nums2):""":type nums1: List[int]:type nums2: List[int]:rtype: float"""nums = nums1 + nums2nums.sort()length = len(nums)if length == 2:return (nums[0] + nums[1])/2if length % 2 == 0:return (nums[length // 2 - 1] + nums[(length // 2)])/2return nums[length // 2]
5.最长回文子串
给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。
示例 1:
输入: “babad”
输出: “bab”
注意: “aba” 也是一个有效答案。
示例 2:
输入: “cbbd”
输出: “bb”
解法:首先向字符串的空位插入’#’,这样可以避免奇偶长度分类。
然后也是扫一遍字符串,主要是记录了已访问过的最右侧字符maxright 和其对称轴pos,并加利用,避免重复访问。
时间o(n)。
代码展示:
class Solution:def longestPalindrome(self, s):""":type s: str:rtype: str"""s = '#'+'#'.join(s)+'#' #例如'#a#b#a#'pos = maxright = 0RL = [0]*len(s) #RL是回文串半径,如回文串长3,RL=1,回文串长5,RL=2maxcenter = 0 #记录最长回文中心序号for i in range(len(s)):if i<maxright: #i在maxright左侧RL[i] = min(maxright-i, RL[pos*2-i] )else: #i在maxright右侧(含)RL[i] = 0while i-RL[i]-1>=0 and i+RL[i]+1<len(s) and s[i-RL[i]-1] == s[i+RL[i]+1]:RL[i] += 1 #继续扩展(RL[j]短的情况是不需要继续扩展的,但多扩展一次也就出循环了)if i+RL[i] > maxright: #更新maxright和imaxright = RL[i] + ipos = iif RL[i] > RL[maxcenter]: #更新maxcentermaxcenter = ireturn s[maxcenter-RL[maxcenter]:maxcenter+RL[maxcenter]+1].replace('#','')
并不是很懂,随后有时间再回来看
6. Z 字形变换
将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。
比如输入字符串为 “LEETCODEISHIRING” 行数为 3 时,排列如下:
L C I R
E T O E S I I G
E D H N
之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“LCIRETOESIIGEDHN”。
请你实现这个将字符串进行指定行数变换的函数:
string convert(string s, int numRows);
示例 1:
输入: s = “LEETCODEISHIRING”, numRows = 3
输出: “LCIRETOESIIGEDHN”
示例 2:
输入: s = “LEETCODEISHIRING”, numRows = 4
输出: “LDREOEIIECIHNTSG”
解释:
L D R
E O E I I
E C I H N
T S G
代码展示:
class Solution:def convert(self, s, numRows):""":type s: str:type numRows: int:rtype: str"""str_length = len(s)node_length = 2*numRows - 2 # 两列之间的差result = ""if str_length == 0 or numRows == 0 or numRows == 1:return sfor i in range(numRows): # 从第一行遍历到最后一行for j in range(i, str_length, node_length):result += s[j] # 第一行和最后一行 还有普通行的整列数字if i != 0 and i != numRows-1 and j - 2*i + node_length < str_length:result += s[j-2*i+node_length] # 单列行的数字return result
LeetCode学习记录(4-6)相关推荐
- 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 数据预 ...
最新文章
- 一篇文章让你了解区块链技术的发展阶段
- Leetcode: 113. Path Sum II
- MyEclipse快捷键大全(绝对全)
- ubuntu su进入root权限
- android异步线程未执行,关于多线程:当服务在后台运行时,Android异步任务无法正常运行(doInBackground未执行)...
- 实例30:python
- java怎么导出有模板的表格_java用模板导出数据表格-Go语言中文社区
- 3种方法实现http虚拟主机
- Linux 共享库:LD_LIBRARY_PATH 与ld.so.conf_爱过了就好_新浪博客
- oracle物理,Oracle物理结构概述
- Win11任务栏不重叠怎么设置,Win11任务栏不重叠设置方法
- 百度地图离线_3大主流导航地图,你用的哪个?
- 谷歌浏览器html调试iphone11,FireFox chrome 模拟手机浏览器 调试手机网页
- js继承的几种实现方式
- 谷歌项目经理都是怎么玩OKR的?我只告诉你
- 2020-09-03解决pip install安装非常慢[Errno 101] 网络不可达问题
- 2019牛客多校第九场 H Cutting Bamboos (二分主席树)
- 最好用的PDF阅读器,登陆华为应用市场首页
- Creo 4.0 软件安装教程
- C++ 11 14 RAII经典用法