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

笔试刷题专题(一)

文章目录

  • 最小花费爬楼梯(动态规划)
    • 题解
    • 代码
  • 数组中两个字符串的最小距离(贪心(dp))
    • 题解
    • 代码
  • 点击消除
    • 题解
    • 代码

最小花费爬楼梯(动态规划)

题目链接
在这里插入图片描述

题解

1. 状态表示:以i位置为结尾的最小花费
2. 状态转移方程:
dp[i] = min(dp[i-1] + cost[i-1,dp[i-2] + cost[i-2])
可以从 i-1 位置和 i-2 到达 i 位置
注意 dp[i] 表示的是 i 位置之前的最小花费,还要加上该点的位置才是到达这个点的最小花费
注意楼顶的位置是n下标的位置
3.从左往右开始填表
4. 初始化:dp[0] = dp[1] = 0,因为从0或者1位置开始向后走,之前是没有花费的

代码

class Solution 
{
public:int minCostClimbingStairs(vector<int>& cost) {int n = cost.size();vector<int> dp(n+1);// 初始化// 1.到达dp[i]这个位置的值是不用算进去的// 从这个位置起跳后才把这个位置的值加入到dp表中// 2.楼顶是在下标为n的位置dp[0] = dp[1] = 0;for(int i = 2;i <= n;i++){// 填表dp[i] = min(dp[i-1] + cost[i-1],dp[i-2] + cost[i-2]);}return dp[n];}
};

数组中两个字符串的最小距离(贪心(dp))

题目链接
在这里插入图片描述

题解

1. 第二种解法是:
使用两个额外的变量来记录两个字符串的下标,每遇到其中一个字符串就去这个字符串的前面找另一个字符串,记录两个字符串之间的最小距离,记得找完后要更新下标
2. 这样不用暴力地固定一个字符串找另一个字符串了,时间复杂度优化为了O(N)

在这里插入图片描述

代码

#include <iostream>
#include<string>
using namespace std;int n;
int main() 
{  cin >> n;string s1,s2;cin >> s1 >> s2;int ans = 0x3f3f3f3f;// 最大的数int prev1 = -1,prev2 = -1;for(int i = 0;i < n;i++){string s;cin >> s;if(s1 == s){if(prev2 != -1){ans = min(ans,i - prev2);}prev1 = i;}else if(s2 == s){if(prev1 != -1){ans = min(ans,i - prev1);}prev2 = i;}}if(ans == 0x3f3f3f3f) cout << -1 << '\n';else cout << ans << '\n'; return 0;
}

点击消除

题目链接
在这里插入图片描述

题解

1. 这题和括号匹配是类似的,都是两两消除
2. 可以使用栈或者用一个string来模拟栈
3. 如果是使用栈的话,把栈中的元素取出来放入string中,最后需要逆置一下
4. 用字符串模拟栈,如果栈是空的,就加入st字符串的尾部,如果栈非空并且st尾部的元素和字符串中的元素相同就出栈,如果栈非空并且st尾部的元素和字符串的元素不同就入栈,模拟是不需要逆置的

在这里插入图片描述

代码

#include<vector>
#include<string>
#include<iostream>
#include<stack>
#include<algorithm>
using namespace std;int main()
{string s;cin >> s;int n = s.size();stack<char> sk;for (int i = 0; i < n; i++){if (sk.empty()) sk.push(s[i]);else{if (sk.top() == s[i]){sk.pop();}else sk.push(s[i]);}}string t;if (sk.empty()) cout << 0 << '\n';else{while (!sk.empty()){char ch = sk.top();t.push_back(ch);sk.pop();}reverse(t.begin(), t.end());cout << t << '\n';}return 0;
}用字符串模拟栈
#include <iostream>
#include<string>
using namespace std;int main() 
{string s,st;cin >> s;for(auto ch : s){if(st.size() && st.back() == ch) st.pop_back();else st += ch;}int k = st.size();if(k == 0) cout << 0 << '\n';else cout << st << '\n';return 0;
}

相关文章:

笔试刷题专题(一)

文章目录 最小花费爬楼梯&#xff08;动态规划&#xff09;题解代码 数组中两个字符串的最小距离&#xff08;贪心&#xff08;dp&#xff09;&#xff09;题解代码 点击消除题解代码 最小花费爬楼梯&#xff08;动态规划&#xff09; 题目链接 题解 1. 状态表示&#xff1…...

LeetCode977有序数组的平方

思路①&#xff1a;先平方&#xff0c;后快排&#xff0c;输出&#xff08;基准元素&#xff0c;左小右大&#xff09; 时间复杂度&#xff1a;O&#xff08;nlogn&#xff09; 思路②&#xff1a;双指针左右开弓&#xff0c;首先原数组已经是按照非递减顺序排序&#xff0c;那…...

React.js 基础与进阶教程

React.js 基础与进阶教程 React.js 是由 Facebook 开发的流行前端 JavaScript 库&#xff0c;专为构建用户界面&#xff08;UI&#xff09;设计&#xff0c;尤其适用于单页面应用&#xff08;SPA&#xff09;。它采用组件化开发模式&#xff0c;使 UI 结构更加清晰、可维护性更…...

网络变压器的主要电性参数与测试方法(4)

Hqst盈盛&#xff08;华强盛&#xff09;电子导读&#xff1a;网络变压器的主要电性参数与测试方法&#xff08;4&#xff09;.. 今天我们继续来看看网络变压器的2个重要电性参数与它的测试方法&#xff1a; 1.反射损耗&#xff08;Return loss&…...

【实战ES】实战 Elasticsearch:快速上手与深度实践-8.1.1基于ES的语义搜索(BERT嵌入向量)

&#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 文章大纲 基于Elasticsearch与BERT的语义搜索架构设计与实战1. 传统搜索的局限性与语义搜索的崛起1.1 关键词搜索 vs 语义搜索1.2 Elasticsearch向量检索演进历程关键版本特性对比 2.…...

Windows10 WSL又又又一次崩了 Docker Desktop - Unexpected WSL error

问题&#xff1a;Windows10 WSL又又又一次崩了 这回报错&#xff1a; 然后再打开WSL Ubuntu就卡住了&#xff0c;等很长时间没反应&#xff0c;就关掉了。 手动启动Docker Desktop&#xff0c;报错&#xff1a; An unexpected error occurred while executing a WSL comman…...

XMI(XML Metadata Interchange)和XML之间的关系

XMI&#xff08;XML Metadata Interchange&#xff09;和XML之间的关系可以从以下几个方面进行阐述&#xff1a; 一、定义与背景 XML&#xff1a; XML&#xff08;eXtensible Markup Language&#xff09;是一种标记语言&#xff0c;被设计用来传输和存储数据。它是一种自描述…...

《深度剖析:鸿蒙系统下智能NPC与游戏剧情的深度融合》

在游戏开发领域&#xff0c;鸿蒙系统的崛起为开发者们带来了前所未有的机遇与挑战。尤其是在开发基于鸿蒙系统的人工智能游戏时&#xff0c;实现智能NPC的行为逻辑与游戏剧情紧密结合&#xff0c;成为了打造沉浸式游戏体验的关键。 鸿蒙系统作为一款面向全场景的分布式操作系统…...

【前端基础】:HTML

超链接标签: a href: 必须具备, 表示点击后会跳转到哪个页面. target: 打开方式. 默认是 _self. 如果是 _blank 则用新的标签页打开 <a href"http://www.baidu.com">百度</a>链接的几种形式: 外部链接: href 引用其他网站的地址 <a href"http…...

JVM垃圾收集器合集

前言&#xff1a;JVM GC收集器的回顾与比较 JVM&#xff08;Java虚拟机&#xff09;中的垃圾收集器是自动管理内存的重要机制&#xff0c;旨在回收不再使用的对象所占用的内存空间。以下是JVM中几种常见的垃圾收集器的详细介绍&#xff1a; 一、新生代垃圾收集器 1.Serial收集…...

Sourcetree——使用.gitignore忽略文件或者文件夹

一、为何需要文件忽略机制&#xff1f; 1.1 为什么要会略&#xff1f; 对于开发者而言&#xff0c;明智地选择忽略某些文件类型&#xff0c;能带来三大核心优势&#xff1a; 仓库纯净性&#xff1a;避免二进制文件、编译产物等污染代码库 安全防护&#xff1a;防止敏感信息&…...

unity使用mesh 画图(1)

plane 圆 空心椭圆 椭圆 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI;public class DrawMeshManager {static DrawMeshManager instance;public static DrawMeshManager Instance {get {if (instance ! null){retu…...

本地部署 OpenManus 保姆级教程(Windows 版)

一、环境搭建 我的电脑是Windows 10版本&#xff0c;其他的没尝试&#xff0c;如果大家系统和我的不一致&#xff0c;请自行判断&#xff0c;基本上没什么大的出入啊。 openManus的Git地址&#xff1a;https://github.com/mannaandpoem/OpenManus 根据官网的两种安装推荐方式如…...

视频推拉流:EasyDSS平台直播通道重连转推失败原因排查与解决

视频推拉流EasyDSS视频直播点播平台&#xff0c;集视频直播、点播、转码、管理、录像、检索、时移回看等功能于一体&#xff0c;可提供音视频采集、视频推拉流、播放H.265编码视频、存储、分发等视频能力服务。 用户使用EasyDSS平台对直播通道进行转推&#xff0c;发现只要关闭…...

机器人领域专业名词汇总

1. 电机与驱动 电机类型 DC Motor&#xff08;直流电机&#xff09;&#xff1a;通过直流电源驱动的电机。Stepper Motor&#xff08;步进电机&#xff09;&#xff1a;通过脉冲信号控制旋转角度的电机。Servo Motor&#xff08;伺服电机&#xff09;&#xff1a;带有反馈控制的…...

成为超人 21:超人怎么学?技能的学习,如编程

成为超人 21&#xff1a;超人怎么学&#xff1f;技能的学习&#xff0c;如编程 ① 搞定全能自恋② 超人怎么学&#xff1f;③ 耐心怎么来&#xff1f; 宇树机器人王兴兴&#xff1a;奇迹也有算法&#xff0c;做成事没有那么难&#xff0c;就是把不可能三个字&#xff0c;拆解成…...

【科研绘图系列】python绘制分组点图(grouped dot plot)

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍加载R包数据下载导入数据函数`generateRectBoxDF` 函数主要作用参数解释逻辑流程`nmfDotPlot` 函数主要作用参数解释逻辑流程画图1画图2画图3画图4介绍 【科研绘图系列】python绘制…...

Springfox、Springdoc和Swagger

Springfox、Swagger 和 Springdoc Springfox、Swagger 和 Springdoc 是用于在 Spring Boot 项目中生成API文档的工具&#xff0c;但它们之间有显著的区别和演进关系&#xff1a; 1.Swagger 简介 Swagger 是一个开源项目&#xff0c;旨在为 RESTful APIs 提供交互式文档。最…...

在Spring Boot项目中如何实现获取FTP远端目录结构

Java语言实现获取FTP远端目录结构的实现方式有多种,在Spring Boot 项目中,最简单和快速的方式就是使用Spring Integration 实现FTP相关的功能。 前言 本篇的示例和演示基于Windows 的FTP 服务,关于如何在Windows 开启FTP服务可以参考: Windows 如何开启和使用FTP服务 本…...

Flutter_学习记录_device_info_plus 插件获取设备信息

引入三方库device_info_plus导入头文件 import package:device_info_plus/device_info_plus.dart;获取设备信息的主要代码 DeviceInfoPlugin deviceInfoPlugin DeviceInfoPlugin(); BaseDeviceInfo deviceInfo await deviceInfoPlugin.deviceInfo;完整案例 import package…...

Java高频面试之集合-10

hello啊&#xff0c;各位观众姥爷们&#xff01;&#xff01;&#xff01;本baby今天来报道了&#xff01;哈哈哈哈哈嗝&#x1f436; 面试官&#xff1a;详解红黑树&#xff1f;HashMap为什么不用二叉树/平衡树呢&#xff1f; 一、红黑树&#xff08;Red-Black Tree&#xff…...

never_give_up

一个很有意思的题&#xff1a; never_give_up - Bugku CTF平台 注意到注释里面有1p.html&#xff0c;我们直接在源代码界面看&#xff0c;这样就不会跳转到它那个链接的&#xff1a; 然后解码可得&#xff1a; ";if(!$_GET[id]) {header(Location: hello.php?id1);exi…...

Python Selenium库入门使用,图文详细。附网页爬虫、web自动化操作等实战操作。

文章目录 前言1 创建conda环境安装Selenium库2 浏览器驱动下载&#xff08;以Chrome和Edge为例&#xff09;3 基础使用&#xff08;以Chrome为例演示&#xff09;3.1 与浏览器相关的操作3.1.1 打开/关闭浏览器3.1.2 访问指定域名的网页3.1.3 控制浏览器的窗口大小3.1.4 前进/后…...

聊天室Python脚本——ChatGPT,好用

下面提供两个 Python 脚本&#xff0c;一个作为服务器端&#xff08;chat_server.py&#xff09;&#xff0c;一个作为客户端&#xff08;chat_client.py&#xff09;。你可以在一台电脑上运行服务器脚本&#xff0c;然后在不同电脑上运行客户端脚本&#xff08;连接时指定服务…...

AI4CODE】3 Trae 锤一个贪吃蛇的小游戏

【AI4CODE】目录 【AI4CODE】1 Trae CN 锥安装配置与迁移 【AI4CODE】2 Trae 锤一个 To-Do-List 这次还是采用 HTML/CSS/JAVASCRIPT 技术栈 Trae 锤一个贪吃蛇的小游戏。 1 环境准备 创建一个 Snake 的子文件夹&#xff0c;清除以前的会话记录。 2 开始构建 2.1 输入会…...

【语料数据爬虫】Python爬虫|批量采集会议纪要数据(1)

前言 本文是该专栏的第2篇,后面会持续分享Python爬虫采集各种语料数据的的干货知识,值得关注。 在本文中,笔者将主要来介绍基于Python,来实现批量采集“会议纪要”数据。同时,本文也是采集“会议纪要”数据系列的第1篇。 采集相关数据的具体细节部分以及详细思路逻辑,笔…...

Linux 进程的一生(一):进程与线程的创建机制解析

在 Linux 操作系统中&#xff0c;每个任务都以「进程」的形式存在。但 Linux 下的「线程」又是什么&#xff1f;Linux 并没有单独定义一种全新数据结构来表示线程&#xff0c;而是将线程视为一种特殊的进程——一种共享资源的轻量级进程。然而&#xff0c;在具体实现和运行机制…...

【面试题集合】

目录 强缓存VS协商缓存**一、强缓存&#xff08;本地缓存&#xff09;**1. **定义**2. **核心 HTTP 头**3. **缓存生效流程**4. **应用场景** **二、协商缓存&#xff08;条件请求&#xff09;**1. **定义**2. **核心 HTTP 头**3. **缓存生效流程**4. **应用场景** **三、强缓存…...

【Academy】SSRF ------ Server-side request forgery

SSRF ------ Server-side request forgery 1. 什么是 SSRF&#xff1f;2. SSRF 攻击的影响是什么&#xff1f;3. 常见的 SSRF 攻击3.1 针对服务器的 SSRF 攻击3.2 针对其他后端系统的 SSRF 攻击 4. 规避常见的 SSRF 防御4.1 具有基于黑名单的输入过滤器的 SSRF4.2 具有基于白名…...

Git 的详细介绍及用法

一、Git 的优点 分布式版本控制 每个开发者都拥有完整的仓库副本&#xff0c;无需依赖中央服务器&#xff08;如 SVN&#xff09;。支持离线操作&#xff08;提交、查看历史、创建分支等&#xff09;。 高效的分支管理 创建和切换分支速度快&#xff08;几乎是瞬间完成&#x…...