当前位置: 首页 > article >正文

【算法】二分查找-20231121

这里写目录标题

  • 一、344. 反转字符串
  • 二、392. 判断子序列
  • 三、581. 最短无序连续子数组
  • 四、680. 验证回文串 II

在这里插入图片描述

一、344. 反转字符串

提示
简单
865
相关企业
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。

不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。

示例 1:

输入:s = [“h”,“e”,“l”,“l”,“o”]
输出:[“o”,“l”,“l”,“e”,“h”]
示例 2:

输入:s = [“H”,“a”,“n”,“n”,“a”,“h”]
输出:[“h”,“a”,“n”,“n”,“a”,“H”]

class Solution:

    def func(self,nums):
        left=0
        right=len(nums)-1
        self.reverse(nums,left,right)

    def reverse(self,nums,start,end):
        while start<end:
            nums[start],nums[end]=nums[end],nums[start]
            start+=1
            end-=1

nums=["h","e","l","l","o"]
ss=Solution()
ss.func(nums)
print(nums)

二、392. 判断子序列

简单

给定字符串 s 和 t ,判断 s 是否为 t 的子序列。

字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。

进阶:

如果有大量输入的 S,称作 S1, S2, … , Sk 其中 k >= 10亿,你需要依次检查它们是否为 T 的子序列。在这种情况下,你会怎样改变代码?

致谢:

特别感谢 @pbrother 添加此问题并且创建所有测试用例。

示例 1:

输入:s = “abc”, t = “ahbgdc”
输出:true
示例 2:

输入:s = “axc”, t = “ahbgdc”
输出:false

def test4(s,t):

    j=0
    for i in t:
        if s[j]==i:
            j+=1

            if j==len(s)-1:
                return True
    return False

s="axc"
t="ahbgdc"
print(test4(s, t))

三、581. 最短无序连续子数组

中等
1.1K
相关企业
给你一个整数数组 nums ,你需要找出一个 连续子数组 ,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序。

请你找出符合题意的 最短 子数组,并输出它的长度。

示例 1:

输入:nums = [2,6,4,8,10,9,15]
输出:5
解释:你只需要对 [6, 4, 8, 10, 9] 进行升序排序,那么整个表都会变为升序排序。
示例 2:

输入:nums = [1,2,3,4]
输出:0
示例 3:

输入:nums = [1]
输出:0

思路:
1、我们将数据进行排序
2、然后左右指针从0和len(nums)-1开始向中间靠拢
3、找到左右第一个与原数组不相同的下标终止即可

def test5(nums):
    new_nums=sorted(nums)
    left=0
    right=len(nums)-1
    while left<len(nums):
        if nums[left]!=new_nums[left]:
            break
        left+=1

    while right>left:
        if nums[right]!=new_nums[right]:
            break
        right-=1

    return right-left+1

nums=[1]
print(test5(nums))

四、680. 验证回文串 II

简单

给你一个字符串 s,最多 可以从中删除一个字符。
请你判断 s 是否能成为回文字符串:如果能,返回 true ;否则,返回 false 。

示例 1:

输入:s = “aba”
输出:true
示例 2:

输入:s = “abca”
输出:true
解释:你可以删除字符 ‘c’ 。
示例 3:

输入:s = “abc”
输出:false

def test5(s):
    left=0
    right=len(s)-1
    while left<right:
        if s[left]==s[right]:
            left+=1
            right-=1
        else:
            return s[left:right]==s[left:right][::-1] or s[left+1:right+1]==s[left+1:right+1][::-1]

    return True

s='abca'
print(test5(s))

在这里插入图片描述


http://www.kler.cn/a/136026.html

相关文章:

  • uniapp Native.js 调用安卓arr原生service
  • 前端yarn工具打包时网络连接问题排查与解决
  • IIC I2C子协议 SMBus协议 通信协议原理 时序 SMBus深度剖析
  • 【libuv】Fargo信令1:client发connect消息给到server
  • 后端使用Spring Boot框架 + 前端VUE 实现滑动模块验证码
  • Word使用分隔符实现页面部分分栏
  • .NET 8.0 AOT 教程 和使用 和 .NET ORM 操作
  • Oracle 11g 多数据库环境下的TDE设置
  • 使用键盘管理器更改键盘快捷键,让键盘真正迎合你的使用习惯
  • 【NGINX--2】高性能负载均衡
  • Django(九、choices参数的使用、多对多表的三种创建方式、Ajax技术)
  • 前端本地存储数据库IndexedDB
  • 计算机是如何工作的(简单介绍)
  • 机器学习二元分类 二元交叉熵 二元分类例子
  • 分布式与微服务 —— 初始
  • 二进制部署k8s集群-过程中的问题总结(接上篇的部署)
  • 简单工程模式
  • 目标检测YOLO实战应用案例100讲-基于改进YOLOv5s的道路目标检测
  • Debian系列的Linux发行版上部署wvp
  • C语言--每日五道选择题--Day20
  • el-table 对循环产生的空白列赋默认值
  • 论文笔记:The Impact of AI on Developer Productivity:Evidence from GitHub Copilot
  • 怎么在echarts图上左右滑动切换数据区间
  • Flutter在web项目中使用iframe
  • html主页框架,前端首页通用架构,layui主页架构框架,首页框架模板
  • 设计原则 | 开放封闭原则