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)相关推荐

  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. 一篇文章让你了解区块链技术的发展阶段
  2. Leetcode: 113. Path Sum II
  3. MyEclipse快捷键大全(绝对全)
  4. ubuntu su进入root权限
  5. android异步线程未执行,关于多线程:当服务在后台运行时,Android异步任务无法正常运行(doInBackground未执行)...
  6. 实例30:python
  7. java怎么导出有模板的表格_java用模板导出数据表格-Go语言中文社区
  8. 3种方法实现http虚拟主机
  9. Linux 共享库:LD_LIBRARY_PATH 与ld.so.conf_爱过了就好_新浪博客
  10. oracle物理,Oracle物理结构概述
  11. Win11任务栏不重叠怎么设置,Win11任务栏不重叠设置方法
  12. 百度地图离线_3大主流导航地图,你用的哪个?
  13. 谷歌浏览器html调试iphone11,FireFox chrome 模拟手机浏览器 调试手机网页
  14. js继承的几种实现方式
  15. 谷歌项目经理都是怎么玩OKR的?我只告诉你
  16. 2020-09-03解决pip install安装非常慢[Errno 101] 网络不可达问题
  17. 2019牛客多校第九场 H Cutting Bamboos (二分主席树)
  18. 最好用的PDF阅读器,登陆华为应用市场首页
  19. Creo 4.0 软件安装教程
  20. C++ 11 14 RAII经典用法

热门文章

  1. 浏览器渲染页面的原理及流程---------重绘与重排(回流)--优化
  2. tensorflow分布式运行
  3. 关于C#语言中的集合
  4. 查询记录rs.previous()使用
  5. 【已解决】bootstrap table 参数后台获取不到
  6. vue 数据劫持 响应式原理 Observer Dep Watcher
  7. Oracle中 ORA-12704:字符集不匹配
  8. vue 添加过滤器-以格式化日期为例
  9. vue父子组件的传值
  10. Dij_heap__前向星。