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

leetcode 32最长有效括号 34在排序数组中查找元素的第一个和最后一个位置

32. 最长有效括号
给你一个只包含 '(' 和 ')' 的字符串,找出最长有效(格式正确且连续)括号子串的长度。
示例 1:
输入:s = "(()"
输出:2
解释:最长有效括号子串是 "()"
示例 2:
输入:s = ")()())"
输出:4
解释:最长有效括号子串是 "()()"
示例 3:
输入:s = ""
输出:0

题解:通过栈实现

 enumerate函数用于将一个可迭代的对象组合为一个索引序列,
 同时列出数据和数据下标。在这个例子中,i是索引,j是s中的元素。

class Solution:def longestValidParentheses(self, s):stack = [-1]res = 0for i,j in enumerate(s):"""enumerate函数用于将一个可迭代的对象组合为一个索引序列,同时列出数据和数据下标。在这个例子中,i是索引,j是s中的元素。"""if j == "(":stack.append(i)else:stack.pop()if not stack:stack.append(i)else:res = max(res,i - stack[-1])return res
34. 在排序数组中查找元素的第一个和最后一个位置
给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。
请你找出给定目标值在数组中的开始位置和结束位置。
如果数组中不存在目标值 target,返回 [-1, -1]。
你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。
示例 1:
输入:nums = [5,7,7,8,8,10], target = 8
输出:[3,4]
示例 2:
输入:nums = [5,7,7,8,8,10], target = 6
输出:[-1,-1]
示例 3:
输入:nums = [], target = 0
输出:[-1,-1]

题解:可以直接使用二分查找函数 bisect_left, bisect_right 很快解出,这俩个函数具体使用,

参见博客http://t.csdnimg.cn/0H7jg

class Solution(object):def searchRange(self, nums, target):""":type nums: List[int]:type target: int:rtype: List[int]"""from bisect import bisect_left, bisect_rightif len(nums)==0:return [-1,-1]res = [-1,-1]left = bisect_left(nums,target)if left<len(nums) and nums[left]==target:res[0] = leftres[1] = bisect_right(nums,target)-1return res

补充 二分查找手搓代码,与之前总结的双指针解法十分类似,望读者进行区分掌握

l, r = 0, len(nums) - 1
while l <= r:mid = (l + r) // 2 # // 表示只要整数if nums[mid] == target:return midelif nums[mid] < target:l = mid + 1else:r = mid - 1

http://www.lryc.cn/news/240685.html

相关文章:

  • 【附代码】判断线段是否相交算法(Python,C++)
  • PDF控件Spire.PDF for .NET【转换】演示:将 PDF 转换为 word、HTML、SVG、XPS
  • 【FLink】水位线(Watermark)
  • github访问不了问题
  • 【Java】认识String类
  • 算法——滑动窗口(Sliding Window)
  • Android异步之旅:探索AsyncTask
  • kibana 7安装
  • 为何内存不够用?微服务改造启动多个Spring Boot的陷阱与解决方案
  • 大模型变身双面人:虚假新闻制造机VS假新闻鉴别大师!
  • WordPress网站如何修复数千个帖子的SEO错误
  • Mac如何搭建Vue项目
  • 深入 Django 的 URL 分发器
  • 基于单片机设计的气压与海拔高度检测计(采用MPL3115A2芯片实现)
  • 云原生入门系列(背景和驱动力)
  • Django中间件
  • redis运维(十九)redis 的扩展应用 lua(一)
  • SpringBoot——MVC原理
  • [Linux] shell条件语句和if语句
  • 【陈老板赠书活动 - 18期】-如何成为架构师这几本书推荐给你
  • chrome 插件 Mobile simulator
  • JavaScript框架 Angular、React、Vue.js 的全栈解决方案比较
  • 【Vue】核心特性(响应式)
  • ESP32 http 请求
  • 【C++】拷贝构造函数,析构函数详解!
  • qml ParticleSystem3D使用介绍
  • 集团投融资大数据平台解决方案
  • 深信服技术认证“SCSA-S”划重点:渗透测试工具使用
  • CCFCSP试题编号:201803-2试题名称:碰撞的小球
  • 《安富莱嵌入式周报》第327期:Cortex-A7所有外设单片机玩法LL/HAL库全面上线,分享三款GUI, PX5 RTOS推出网络协议栈,小米Vela开源