笔试强训day37

旋转字符串

描述

字符串旋转:

给定两字符串A和B,如果能将A从中间某个位置分割为左右两部分字符串(可以为空串),并将左边的字符串移动到右边字符串后面组成新的字符串可以变为字符串B时返回true。

例如:如果A=‘youzan’,B=‘zanyou’,A按‘you’‘zan’切割换位后得到‘zanyou’和B相同,返回true。

再如:如果A=‘abcd’,B=‘abcd’,A切成‘abcd’和’'(空串),换位后可以得到B,返回true。

数据范围:A,B字符串长度满足 n≤1000n≤1000,保证字符串中仅包含小写英文字母和阿拉伯数字

进阶: 时间复杂度 O(n)O(n),空间复杂度 O(n)O(n)

上去先判断s和t的字符串长度是否是相同的,如果是不相同的是不可能通过旋转变成相同的,所以直接返回false就可以了,如果是相同的长度的话,就把s的长度*2,去判断之后的字符串中是否含有t字符串就可以了

class Solution {
public:bool solve(string s, string t) {// write code hereif(s.size() != t.size()) return false;else return (s+s).find(t)!=-1; }
};

合并k个已排序的链表

描述

合并 k 个升序的链表并将结果作为一个升序的链表返回其头节点。

数据范围:节点总数 0≤n≤50000≤n≤5000,每个节点的val满足 ∣val∣<=1000∣val∣<=1000

要求:时间复杂度 O(nlogn)O(nlogn)

使用一个最小堆,加上一个最小堆的比较规则

/*** struct ListNode {*	int val;*	struct ListNode *next;*	ListNode(int x) : val(x), next(nullptr) {}* };*/struct cmp {bool operator()(ListNode* a, ListNode* b) {return a->val > b->val; // 假设按节点的值进行比较,值小的优先级高}
};
class Solution {
public:ListNode* mergeKLists(vector<ListNode*>& lists) {// write code herepriority_queue<ListNode*,vector<ListNode*>,cmp > pq;for(auto cur:lists){if(cur)pq.push(cur);}auto dummy = new ListNode(-1);auto cur = dummy;while(!pq.empty()){ListNode* node = pq.top();pq.pop();if(node->next)pq.push(node->next);cur->next = node;cur = node;}ListNode* head = dummy->next;delete dummy;return head;}
};

滑雪

描述

给定一个n×m n×m 的矩阵,矩阵中的数字表示滑雪场各个区域的高度,你可以选择从任意一个区域出发,并滑向任意一个周边的高度严格更低的区域(周边的定义是上下左右相邻的区域)。请问整个滑雪场中最长的滑道有多长?(滑道的定义是从一个点出发的一条高度递减的路线)。

(本题和矩阵最长递增路径类似,该题是当年NOIP的一道经典题)

数据范围: 1≤n,m≤100 1≤n,m≤100 ,矩阵中的数字满足 1≤val≤1000 1≤val≤1000

输入描述:

第一行输入两个正整数 n 和 m 表示矩阵的长宽。
后续 n 行输入中每行有 m 个正整数,表示矩阵的各个元素大小。

输出描述:

输出最长递减路线。

解法是记忆化搜索,和矩阵的最长递增路径非常相似,可以参考那道题的代码

#include <cstdio>
#include <iostream>
#include <cstring>using namespace std;
int n,m;
const int N = 110;
int g[N][N],memo[N][N];
int dx[4]{1,-1,0,0},dy[4]{0,0,1,-1};int  dfs(int i,int j)
{if(memo[i][j]!=-1)return memo[i][j];int ans = 1;for(int k = 0;k<4;++k){int x = i+dx[k],y=j+dy[k];if(x>=0&&x<n&&y>=0&&y<m&&g[x][y] < g[i][j]){ans = max(ans,dfs(x,y)+1);}}return memo[i][j]=ans;
}
int main()
{cin>>n>>m;for(int i = 0;i<n;++i){for(int j = 0;j<m;++j){cin>>g[i][j];}}memset(memo,-1,sizeof memo);int ans = 1;for(int i = 0;i<n;++i){for(int j = 0;j<m;++j){ans = max(ans,dfs(i,j));}}cout<<ans<<endl;return 0;
}

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

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

相关文章

发动机冷却系统排空气

发动机冷却系统排空气的几种常见方法 发动机冷却系统是汽车发动机的重要组成部分&#xff0c;它的主要作用是通过循环冷却液来吸收和散发发动机产生的热量&#xff0c;确保发动机在正常工作温度下运行。然而&#xff0c;在冷却系统的运行过程中&#xff0c;由于各种原因&#…

数据压缩(5)——上下文转换编码

统计压缩编码基于单个字符&#xff0c;字典编码基于单词&#xff1b;上下文变换基于具有联系的上下文&#xff0c;例如&#xff1a; RLE编码针对重复字符&#xff1a;AAAABCCC可以记为[A,4]B[C,3] 增量编码针对数值型数据&#xff1a;通过一些运算以减少数值的变化范围&#…

03.顺序表实现

顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构&#xff0c;一般情况下采用数组存储&#xff0c;在数组上完成数据的增删改查。一般见到的顺序表都是在结构体中定义的数组&#xff0c;只是比普通数组多了增删改查等一些其他功能函数。 上节已经介绍了顺序表有…

【android studio】Gradle和Gradle插件版本关系/配置/常见ERR示例

参考链接&#xff1a; Android之Gradle和Gradle插件区别及联系 grdle 的安装与配置 、gradle和jdk版本对应关系 Android Gradle Plugin与Gradle版本、JDK版本对应关系 配置示例 常见err 主要原因 1.编译版本未设定 2.有多个module而且gradle 版本设置不一致 修改如下&#xf…

虚幻闪烁灯光材质

创建一个材质 材质域改成光照函数 , Time让材质动起来 参数B用来控制速度 , Sine 让灯光闪烁 , Frac 增加了闪烁细节 把材质放到灯光材质上 效果还是挺不错的! 可以用于一些恐怖游戏~

OpenCV高级图形用户界面(8)在指定的窗口中显示一幅图像函数imshow()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 在指定的窗口中显示一幅图像。 函数 imshow 在指定的窗口中显示一幅图像。如果窗口是以 cv::WINDOW_AUTOSIZE 标志创建的&#xff0c;图像将以原…

仕考网:国考笔试没进面还有机会吗?

在国家公务员考试及各省公务员考试中&#xff0c;除了常规的招录程序之外&#xff0c;还有调剂、递补和补录多重机会。 调剂&#xff1a;于笔试结束之后至面试启动之前.针对因报名人数不足未达到预定面试比例的岗位&#xff0c;将开放公开调剂。只要考生的笔试成绩超越了国考设…

React面试题笔记(一)

一、react基础面试题 1.react中keys的作用是什么? key是是用于追踪哪些列表被修改&#xff0c;被添加或者被移除的辅助标识。 在开发过程中&#xff0c;我们需要保证某个元素的 key 在其同级元素中具有唯一性。在 React Diff 算法中 React 会借助元素的 Key 值来判断该元素是…

如何查看默认网关地址:详细步骤

在日常的网络配置与故障排查中&#xff0c;了解并正确查看默认网关地址是一项基础且至关重要的技能。默认网关是连接本地网络与外部网络&#xff08;如互联网&#xff09;的关键节点&#xff0c;它扮演着数据包转发的重要角色。无论是家庭网络、办公室网络还是更复杂的网络环境…

Chromium html<iframe>对应c++接口定义

HTML <iframe> 标签 使用 <iframe> 标签 在当前 HTML 文档中嵌入另一个文档&#xff1a; <!DOCTYPE html> <html> <body><h1>iframe 元素</h1><iframe src"https://www.w3school.com.cn" title"W3School 在线教…

一些简单的编程题(Java与C语言)

引言&#xff1a; 这篇文章呢&#xff0c;小编将会举一些简单的编程题用来帮助大家理解一下Java代码&#xff0c;并且与C语言做个对比&#xff0c;不过这篇文章所出现的题目小编不会向随缘解题系列里面那样详细的讲解每一到题&#xff0c;本篇文章的主要目的是帮助小编和读者们…

vcenter的使用

1 配置 1.1 时间配置 报错原因&#xff1a;ESXI主机没有配置DNS无法解析NTP服务器网址。 解决办法&#xff1a;配置ESXI主机DNS&#xff0c;操作如下图。 点击【配置】、【服务】 【编辑启动策略】 我们可以看到当前的【NTP服务状态】处于 已停止的状态 点击【配置】、【时间…

基于直播美颜SDK的实时美颜平台开发指南

随着直播平台的快速发展&#xff0c;用户对视频质量的要求越来越高&#xff0c;尤其是对于美颜效果的需求。为满足这一市场需求&#xff0c;基于直播美颜SDK的实时美颜平台应运而生。本文将探讨如何开发这样一个平台&#xff0c;助力开发者在激烈的竞争中脱颖而出。 一、理解美…

前端容易错的题2

v-if 和 v-show 区别 使用了 v-if 的时候&#xff0c;如果值为 false &#xff0c;那么页面将不会有这个 html 标签生成。 v-show 则是不管值为 true 还是 false &#xff0c;html 元素都会存在&#xff0c;只是 CSS 中的 display 显示或隐藏 $route和$router的区别 $rou…

PHP DateTime基础用法

PHP DateTime 的用法详解 一、引言 在开发 PHP 应用程序时&#xff0c;处理日期和时间是一个至关重要的任务。PHP 提供了强大的日期和时间处理功能&#xff0c;其中 DateTime 类是最常用的工具之一。DateTime 类提供了丰富的方法来创建、格式化、计算和比较日期时间&#xff…

C#学习笔记(三)

C#学习笔记&#xff08;三&#xff09; 第 二 章 命名空间和类、数据类型、变量和代码规范二、类的组成和使用分析1. 基本概念2. 类的内容组成3. 方法的初步理解 第 二 章 命名空间和类、数据类型、变量和代码规范 二、类的组成和使用分析 1. 基本概念 类是程序的基本单元&a…

OpenCV高级图形用户界面(6)获取指定窗口中图像的矩形区域函数getWindowImageRect()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 提供窗口中图像的矩形区域。 该函数 getWindowImageRect 返回图像渲染区域的客户端屏幕坐标、宽度和高度。 函数原型 Rect cv::getWindowImage…

STM32_实验1_建立新工程

1、使用STM32CubeIDE建立一个新工程 1.1选择时钟源为外部晶振时钟。 1.2选择调试方式为 serial wire&#xff08;串行线&#xff09;。 1.3配置时钟树. 1.4选择以 c 和 h 文件型式管理工程文件。 1.5生成 hex 可执行文件。&#xff08;完成后点击锤子&#xff09; 2.串口输出调…

Windows环境NodeJS下载配置安装运行

Windows环境NodeJS下载配置安装运行 &#xff08;1&#xff09;下载 Node.js — Run JavaScript Everywhere 安装文件。 一路傻瓜式安装。 如果安装正常&#xff0c;输入命令可显示版本号&#xff1a; &#xff08;2&#xff09;可以查询nodejs默认的后续依赖安装包位置及缓存…

地方门户分类信息网站源码系统 用户可以自由发帖 PHP+MySQL组合开发 带完整的安装代码包以及搭建部署教程

系统概述 地方门户分类信息网站源码系统是一个基于PHP和MySQL开发的强大平台&#xff0c;旨在帮助用户轻松搭建地方性的分类信息网站。该系统集成了众多实用功能&#xff0c;支持用户自由发帖、浏览和搜索各类信息&#xff0c;如二手交易、求职招聘、房屋租售、生活服务、商家…