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

leetcode面试经典算法题——2

链接:https://leetcode.cn/studyplan/top-interview-150/

20. 有效的括号

给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。

有效字符串需满足:

  1. 左括号必须用相同类型的右括号闭合。
  2. 左括号必须以正确的顺序闭合。
  3. 每个右括号都有一个对应的相同类型的左括号。

示例 1:

输入:s = “()”
输出:true

示例 2:

输入:s = “()[]{}”
输出:true

示例 3:

输入:s = “(]”
输出:false

Python代码

class Solution:def isValid(self, s: str) -> bool:stack = []# 利用栈先进后出的特点,遇见左符号就进栈,遇见右符号则判断栈顶的符号是否与之匹配。len_s = len(s)if len_s < 2:return Falsefor item in s:stack_len = len(stack)if item == "(" or item == "[" or item == "{":stack.append(item)if item == ")":if stack_len != 0 and stack[-1] == "(":stack.pop()else:return Falseelif item == "]":if stack_len != 0 and stack[-1] == "[":stack.pop()else:return Falseelif item == "}":if stack_len != 0 and stack[-1] == "{":stack.pop()else:return Falsei += 1# 操作之后,栈空则全部符合,否则无效if len(stack) == 0:return Trueelse:return Falseif __name__ == '__main__':s = Solution()a = "){}"print(s.isValid(a))

C++代码

#include <iostream>
#include <stack>
using namespace std;class Solution {
public:bool isValid(string s) {// 创建字符栈stack<char> myStack; int len_s = s.size();if (len_s < 2) return false;int i;for (i = 0; i < len_s; i++){int stack_len = myStack.size(); // 获得栈大小if (s[i] == '(' || s[i] == '[' || s[i] == '{')myStack.push(s[i]);else if (s[i] == ')') {if (stack_len != 0 && myStack.top() == '(') myStack.pop();else return false;}else if (s[i] == ']') {if (stack_len != 0 && myStack.top() == '[') myStack.pop();else return false;}else if (s[i] == '}') {if (stack_len != 0 && myStack.top() == '{') myStack.pop();else return false;}}return myStack.empty(); // 检查栈是否为空}
};int main() {Solution s;string a = "())";cout << s.isValid(a) << endl;return 0;
}

141. 环形链表

给你一个链表的头节点 head ,判断链表中是否有环。

如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos 不作为参数进行传递 。仅仅是为了标识链表的实际情况。

如果链表中存在环 ,则返回 true 。 否则,返回 false 。

在这里插入图片描述

输入:head = [3,2,0,-4], pos = 1
输出:true
解释:链表中有一个环,其尾部连接到第二个节点。

在这里插入图片描述

输入:head = [1,2], pos = 0
输出:true
解释:链表中有一个环,其尾部连接到第一个节点。

在这里插入图片描述

输入:head = [1], pos = -1
输出:false
解释:链表中没有环。

提示:

  • 链表中节点的数目范围是 [0, 10^4]
  • -10^5 <= Node.val <= 10^5
  • pos 为 -1 或者链表中的一个 有效索引 。

Python代码

# Definition for singly-linked list.
class ListNode:def __init__(self, x):self.val = xself.next = Noneclass Solution:def hasCycle(self, head: ListNode) -> bool:# 使用快慢指针,快指针每次走两个结点,慢指针每次走一个结点,当快指针遇上慢指针则存在环fast = headslow = headwhile fast:if fast.next:fast = fast.next.nextelse:breakslow = slow.nextif fast == slow:return Truereturn False
def CreateListNode(l1):head = ListNode(l1[0])node = headfor i in range(1, len(l1)):new_head = ListNode(l1[i])node.next = new_headnode = new_headreturn head

21. 合并两个有序链表

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。

示例 1:
在这里插入图片描述

输入:l1 = [1,2,4], l2 = [1,3,4]
输出:[1,1,2,3,4,4]

示例 2:

输入:l1 = [], l2 = []
输出:[]
示例 3:
输入:l1 = [], l2 = [0]
输出:[0]

提示:

相关文章:

  • 微店商品详情API接口:功能解析与数据应用实践
  • LLM-as-Judge真的更偏好AI输出?
  • 鸿蒙应用元服务开发-Account Kit配置登录权限
  • Prometheus架构组件
  • 国内开源医疗模型研究报告
  • 自动化测试工具playwright中文文档-------14.Chrome 插件
  • 如何在NS3中搭建窄带干扰和扫频干扰场景?
  • 844. 比较含退格的字符串
  • 安装SQLServer管理工具
  • 日语学习-日语知识点小记-构建基础-JLPT-N4阶段(4): 可能形(かのうけい)
  • Coze平台技术解析:零代码AI开发与智能体应用实践
  • 跑得快的标准详细规则·棒球1号位
  • OSPF协议基础
  • 《分布式软总线:网络抖动下的数据传输“定海神针”》
  • 【四川省第三届青少年C++算法设计大赛 (小低组) 第 一试】
  • 【Java学习】全局异常处理器的使用流程
  • opencv二值化实验
  • 解决7穴连接器的信号完整性问题
  • Linux——管道
  • OpenCV---图像基础
  • 三亚亚龙湾3.4公里岸线近岸海域使用权挂牌出让,起始价近九千万
  • 给印度立“人设”:万斯访印祭出美国关税战新招,但效果存疑
  • 吃饭睡觉打国米,如今的米兰把意大利杯当成宝
  • 68岁民营科技企业家、中国环保产业协会原副会长宋七棣逝世
  • 聚焦“共赢蓝色未来”,首届 “海洋命运共同体”上海论坛举行
  • 三江购物:因自身商业需要,第二大股东阿里泽泰拟减持不超3%公司股份