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

【算法】算法题-20231117

这里写目录标题

  • 一、搜索插入位置(35)
  • 二、字符串相乘(43)
  • 三、两个相同字符之间的最长子字符串(1624)
  • 四、给你一个 有效括号字符串 s,返回该字符串的 s 嵌套深度

一、搜索插入位置(35)

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
请必须使用时间复杂度为 O(log n) 的算法。

示例 1:
输入: nums = [1,3,5,6], target = 5
输出: 2

示例 2:
输入: nums = [1,3,5,6], target = 2
输出: 1

示例 3:
输入: nums = [1,3,5,6], target = 7
输出: 4

def erfen_search_insert(nums, target):left = 0right = len(nums) - 1while left <= right:mid = (right + left) // 2if nums[mid] == target:return midelif nums[mid] > target:right = mid - 1else:left = mid + 1return left

二、字符串相乘(43)

给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。
注意:不能使用任何内置的 BigInteger 库或直接将输入转换为整数。

示例 1:
输入: num1 = “2”, num2 = “3”
输出: “6”

示例 2:
输入: num1 = “123”, num2 = “456”
输出: “56088”

def test11(nums1, nums2):res = 0for i, v in enumerate(nums1[::-1]):for j, u in enumerate(nums2[::-1]):res += int(v) * int(u) * (10 ** (i + j))return str(res)res = test11('123', '456')
print(res)

三、两个相同字符之间的最长子字符串(1624)

给你一个字符串 s,请你返回 两个相同字符之间的最长子字符串的长度 ,
计算长度时不含这两个字符。如果不存在这样的子字符串,返回 -1 。

子字符串 是字符串中的一个连续字符序列。

示例 1:
输入:s = “aa”
输出:0
解释:最优的子字符串是两个 ‘a’ 之间的空子字符串。

示例 2:
输入:s = “abca”
输出:2
解释:最优的子字符串是 “bc” 。

示例 3:
输入:s = “cbzxy”
输出:-1
解释:s 中不存在出现出现两次的字符,所以返回 -1 。

示例 4:
输入:s = “cabbac”
输出:4
解释:最优的子字符串是 “abba” ,其他的非最优解包括 “bb” 和 “” 。

思路:
遍历所有的字符
当这个字符在字符串中出现两次时,计算第一个索引和最后一个索引中间的子字符串的数量

def max_value(strs):n=-1for i in set(strs):if strs.count(i)>1:n=max(n,strs.rfind(i)-strs.find(i)-1)return n
s = "cabbac"
r=max_value(s)
print(r)

四、给你一个 有效括号字符串 s,返回该字符串的 s 嵌套深度

例如:“”、“()()”、“()(()())” 都是 有效括号字符串(嵌套深度分别为 0、1、2),而 “)(” 、“(()” 都不是 有效括号字符串 。
给你一个 有效括号字符串 s,返回该字符串的 s 嵌套深度

示例 1:
输入:s = “(1+(2*3)+((8)/4))+1”
输出:3
解释:数字 8 在嵌套的 3 层括号中。
示例 2:
输入:s = “(1)+((2))+(((3)))”
输出:3

思路:
python 栈思想
核心思路其实就是统计最大的连续左括号的数量。
遍历整个字符串,遇到左括号,总数+1,遇到右括号总数-1。
实时更新最大连续左括号的数量。

def test(strs):res=0ret=0for i in strs:if i =="(":ret+=1res=max(ret,res)elif i==")":ret-=1return res
s = "(1)+((2))+(((3)))"
r=test(s)
print(r)

相关文章:

  • Android 11.0 存在中文字符,中文文件名,中文系统属性,编译报错的解决方案
  • Apache Airflow (八) :DAG任务依赖设置
  • Docker push的 http 413问题处理
  • 卡尔曼家族从零解剖-(07) 高斯分布积分为1,高斯分布线性变换依旧为高斯分布,两高斯函数乘积仍为高斯。
  • 智慧汽车—城市NOA迎爆发
  • 【Python】Pandas(学习笔记)
  • 大数据毕业设计选题推荐-机房信息大数据平台-Hadoop-Spark-Hive
  • 学习王阳明知行合一随录
  • yolov5模型代码怎么修改
  • 【ArcGIS处理】行政区划与流域区划间转化
  • C语言编程陷阱(三)
  • 此芯科技加入绿色计算产业联盟,参编绿色计算产业发展白皮书
  • Ansys Electronics Desktop仿真——HFSS线圈寄生电阻,电感
  • 本地开发环境和服务器传输数据的几种方法
  • vue3路由
  • 2019.2.20 c++ 知识梳理
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • java8-模拟hadoop
  • k8s 面向应用开发者的基础命令
  • Markdown 语法简单说明
  • Mysql数据库的条件查询语句
  • OpenStack安装流程(juno版)- 添加网络服务(neutron)- controller节点
  • Python - 闭包Closure
  • Python_网络编程
  • QQ浏览器x5内核的兼容性问题
  • SpringBoot几种定时任务的实现方式
  • VuePress 静态网站生成
  • Vue--数据传输
  • 测试如何在敏捷团队中工作?
  • 从零搭建Koa2 Server
  • 得到一个数组中任意X个元素的所有组合 即C(n,m)
  • 关于 Linux 进程的 UID、EUID、GID 和 EGID
  • 猴子数据域名防封接口降低小说被封的风险
  • 近期前端发展计划
  • 看图轻松理解数据结构与算法系列(基于数组的栈)
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • 微信小程序:实现悬浮返回和分享按钮
  • 我有几个粽子,和一个故事
  • raise 与 raise ... from 的区别
  • 格斗健身潮牌24KiCK获近千万Pre-A轮融资,用户留存高达9个月 ...
  • 如何用纯 CSS 创作一个菱形 loader 动画
  • #define MODIFY_REG(REG, CLEARMASK, SETMASK)
  • #宝哥教你#查看jquery绑定的事件函数
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • (八)Docker网络跨主机通讯vxlan和vlan
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (剑指Offer)面试题41:和为s的连续正数序列
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (学习日记)2024.04.10:UCOSIII第三十八节:事件实验
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • (最简单,详细,直接上手)uniapp/vue中英文多语言切换
  • ****** 二 ******、软设笔记【数据结构】-KMP算法、树、二叉树
  • .gitattributes 文件