【算法/序列】等差数列子序列算术序列最长对称子串

概念:

等差数列:任意两项的差总等于同一个常数

子数组 :是数组中的一个连续序列。

子序列:是通过从原序列删除零个或多个元素并在不改变顺序的情况下排列其余元素而获得的序列

算术序列:是一个数字列表,其中的连续项相差一个常数,即共同的差(也就是类似于等差数列)

一、是否能形成等差数列

简单模拟,利用等差的性质即可

class Solution {
public:bool canMakeArithmeticProgression(vector<int>& arr) {sort(arr.begin(),arr.end());int d = arr[1] -arr[0];for(int i = 0; i < arr.size() - 1; i++){if(arr[i + 1] - arr[i] != d) return false;}return true;}
};

二、等差数列划分 I - 子数组

思路:

该题主要是求其满足等差性质的子数组个数,并且子数组在原数组的相对顺序不能变,并且子数组 是数组中的一个连续序列。

注意:

  • 1 <= nums.length <= 5000
  • -1000 <= nums[i] <= 1000
class Solution {
public:int numberOfArithmeticSlices(vector<int>& nums) {int n = nums.size();if(n == 1) return 0;int d = nums[1] - nums[0], t = 0;int ans = 0;for(int i = 1; i < n - 1; i++){if(nums[i + 1] - nums[i] == d) ++t;else{d  = nums[i + 1] - nums[i];t = 0;} ans += t;}return ans;}
};

三、等差数列划分 II - 子序列

思路:

注意:

  • 1  <= nums.length <= 1000
  • -2^31 <= nums[i] <= 2^31 - 1
class Solution {
public:int numberOfArithmeticSlices(vector<int>& nums) {int ans = 0;int n = nums.size();vector<unordered_map<long long, int>> f(n);for (int i = 0; i < n; ++i) {for (int j = 0; j < i; ++j) {long long d = (long long) nums[i] - nums[j];int cnt = 0; //初始化为0if (f[j].find(d) != f[j].end()) { //如果能够找到差为d的则取出来cnt = f[j].find(d)->second;}ans += cnt;//以当前i为尾项的数目://cnt+1是由当前j位置确定的间隔为d的上一个尾项数目+1转移过来的//而再加上f[i][d],是因为要加上其他任何与当前j不同位置,但产生公差依然为d的数目f[i][d] += cnt + 1;}}return ans;}
};

 四、计算算术子序列的数目

样例1输入:

5
1 2 3 2 3

输出:5 10 3 0 0
 

样例2输入:

4
1 2 3 4

输出:4 6 2 1
 

样例3输入:

1
100

输出:1

思路:

相当于对于n个数字,输出长度为i(1<=i<=n)的子序列个数,对于子序列要求其相应顺序不变,比如样例1中

长度为1的子序列:(1)、(2)、(3)、(4)、(5)

长度为2的子序列:长度为2的子序列都是算术子序列

长度为3的子序列:(1,2,3)、(1,2,5)、(1,4,5)

长度为4的子序列:0

长度为5的子序列:0

注意:

子序列:是通过从原序列删除零个或多个元素并在不改变顺序的情况下排列其余元素而获得的序列

算术序列:是一个数字列表,其中的连续项相差一个常数,即共同的差(也就是类似于等差数列)

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
typedef long long ll;
const ll N = 85, M = 998244353;
ll n, a[N], f[N][N][N];
int main() {cin >> n;for (int i = 1; i <= n; i++) cin >> a[i];for (int i = 1; i <= n; i++) {for (int j = 1; j < i; j++) f[i][j][2] = 1; //初始化}cout << n << ' ';ll ans = 0;for (int l = 2; l <= n; l++) {ll as = 0;for (int i = 2; i <= n; i++) {for (int j = 1; j < i; j++) {for (int k = 1; k < j; k++) {if (a[i] - a[j] == a[j] - a[k]) {f[i][j][l] += f[j][k][l - 1];f[i][j][l] %= M;}}as += f[i][j][l], as %= M;}}cout << as << ' ';//ans += as;}//cout << ans << "\n";return 0;
}

五、最长对称子串

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main(){int i, j, t;string s;getline(cin, s);int n = s.size();int cnt, maxi = 1;for (t = 0; t < n; t++){cnt = 0, i = t, j = n - 1;while (i < j){if (s[i] == s[j]){if (j - i == 2)//奇数cnt++;i++, j--;cnt += 2;//偶数}if (s[i] != s[j]){j--;i = t;cnt = 0;//清零}}maxi = max(maxi, cnt);}printf("%d\n", maxi);return 0;
}

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

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

相关文章

【时时三省】(C语言基础)变量

山不在高&#xff0c;有仙则名。水不在深&#xff0c;有龙则灵。 ——csdn时时三省 变量 可以改变的量 比如 int age&#xff1d;20 &#xff08;类型 变量的名字&#xff1d;0&#xff09; 如果后面要改可以直接代入 age&#xff1d;age1 age可以是任何字母 变量的分类…

【C++】类和对象的基本概念与使用

本文通过面向对象的概念以及通俗易懂的例子介绍面向对象引出类和对象。最后通过与之有相似之处的C语言中的struct一步步引出C中的类的定义方式&#xff0c;并提出了一些注意事项&#xff0c;最后描述了类的大小的计算方法。 一、什么是面向对象&#xff1f; 1.面向对象的概念 …

【C++编程】标准模板库 STL 的基本概念

STL 从广义上分为&#xff1a;容器、算法、迭代器 容器、算法之间通过迭代器进行无缝连接 STL 六大组件&#xff1a; 容器&#xff1a;各种数据结构&#xff0c;如 vector、list、deque、set、map 等&#xff0c;用来存放数据 序列式容器&#xff1a;物理存放上有序关联式容器&…

约束条件和数据库的用户管理

数据库的增删改查 查 约束条件和用户管理 删 约束条件&#xff1a; 主键 主键约束 primary key 用于标识表中的主键列的值&#xff0c;而且这个值是全表当中唯一的&#xff0c;而且值不能为null。 一个表只能有一个主键。 外键&#xff1a;用来建立表与表之间的关系。…

微信小游戏 彩色试管 倒水游戏 逻辑 (四)

最近开始研究微信小游戏&#xff0c;有兴趣的 可以关注一下 公众号&#xff0c; 记录一些心路历程和源代码。 定义了一个名为 WaterFlow class&#xff0c;该类继承自 cc.Graphics&#xff0c;用于在 Cocos Creator 中创建和显示水流的动画效果。下面是对代码的详细解释&#x…

FPGA FIR fdatool filter designer MATLAB

位数问题 fdatool 先确定输入信号的位宽&#xff0c;比如17位在fdatool中&#xff0c;选set quantization parameters 选input/output 设置input word length 为17bit(not confirmed) fir compiler implementation 注意&#xff1a; 当设置输入位宽为16位时&#xff0c;ip核…

Linux系统部署MySQL数据库

1.Linux插入光盘&#xff0c;使用df-h获取光盘信息&#xff0c;默认/dev/sr0文件为光盘文件 使用命令 mount -o ro /dev/sr0 /media进行手动挂载 mount -o ro /dev/sr0 /media 2.进入cd /etc/yum.repos.d目录 编辑配置yum库&#xff0c;编辑vim yum.repos [BaseOS] nameba…

Flutter 状态管理新境界:多Provider并行驱动UI

前言 在上一篇文章中&#xff0c;我们讨论了如何使用 Provider 在 Flutter 中进行状态管理。 本篇文章我们来讨论如何使用多个 Provider。 在 Flutter 中&#xff0c;使用 Provider 管理多个不同的状态时&#xff0c;你可以为每个状态创建一个单独的 ChangeNotifierProvider…

node+MySQL+Express实现账户登录,注册,重置之登录篇

nodeMySQLExpress实现账户登录 实现技术开发工具项目结构效果图app.js代码db.jsrouter下的account.jsdb下的account.jslogin.html数据库结构 实现技术 node.js,MySQL5.7(8.0以上版本会报错)&#xff0c;layui(前端框架)&#xff0c;Express notify(消息通知layui插件) 开发工…

如何使用在线工具将手机相册中的图片转换为JPG格式

我们经常在手机相册中保存大量的图片&#xff0c;无论是家庭聚会的照片还是旅行的瞬间&#xff0c;每一幅图像都承载着珍贵的记忆。然而&#xff0c;有时候我们会遇到图片格式不兼容的问题&#xff0c;尤其是在需要将图片分享到特定平台或编辑时。 例如&#xff0c;某些社交平台…

Java语音转文字及文字转语音教学 (离线版)

1. 语音转文字 1.1 maven导入以下包 <!-- 获取音频信息 --> <dependency><groupId>org</groupId><artifactId>jaudiotagger</artifactId><version>2.0.3</version> </dependency><!-- 语音识别 --> <dependen…

C++知识要点总结笔记

文章目录 前言一、c基础1.指针和引用指针和引用的区别函数指针 2.数据类型整型 short int long 和 long long无符号类型强制类型转换 3.关键字conststaticconst和static的区别define 和 typedef 的区别define 和 inline 的区别const和define的区别constexprvolatileextern前置与…

Linux服务器LVM分区扩展

1、检查服务器当前分配磁盘 查看服务器物理磁盘分配情况&#xff0c;可见服务器当前配置磁盘SDA共250G&#xff0c;已划分区sda1:4G&#xff0c;sda2:146G&#xff1b;其中sda2分区分为两个lvm分区&#xff08;centos-root和centos-swap&#xff09;; 查看磁盘分区挂载情况&am…

【实战】安装Webtours

首先&#xff0c;安装jdk。过程如下图。 添加环境变量&#xff0c;如下图。 安装activeperl&#xff0c;如下图。 复制Webtours文件夹到计算机中&#xff0c;之后双击webtours文件夹中的xigui32.exe&#xff0c;启动webtours的应用服务器。 之后&#xff0c;可以在任务栏右下角…

CSA笔记2-文件管理命令

tree 以树状图显示多级目录 示例&#xff1a; [rootlocalhost ~]# tree haha/ haha/ └── 111 └── 222 2 directories, 0 files [rootlocalhost ~]# tree -L 1 haha/haha/ └── 111 echo > >> < << 示例&#xff1a; [rootxxx ~]#…

Linux限速工具:FlowMaster - IP级网络流量控制脚本

目录 前言&#xff1a; Github加速器&#xff1a; 简介 功能 安装方法 使用方法 数值单位 基本命令 选项 示例 启动 FlowMaster 重启 FlowMaster 停止 FlowMaster 查看状态 查看 Iptables 设置 许可证 贡献 联系我们 前言&#xff1a; 在市面上看了好多关于网…

MySQL执行状态查看与分析

当mysql出现性能问题时&#xff0c;一般会查看mysql的执行状态&#xff0c;执行命令&#xff1a; show processlist 各列的含义 列名含义id一个标识&#xff0c;你要kill一个语句的时候使用&#xff0c;例如 mysql> kill 207user显示当前用户&#xff0c;如果不是root&…

比Snipaste还好用的截图工具?

千鹿设计助手&#xff1a;千鹿设计助手官网 - 设计师效率神器 最近新出的一款截图工具千鹿设计助手&#xff0c;比Snipaste功能多一些。在Snipaste功能基础上&#xff0c;还支持长截图&#xff0c;截动图&#xff0c;还实时保留截图记录、支持OCR识别、文本识别、图片智能处理…

【CSS in Depth 2 精译_018】3.1.2 逻辑属性 + 3.1.3 用好逻辑属性的简写形式

当前内容所在位置&#xff08;可进入专栏查看其他译好的章节内容&#xff09; 第一章 层叠、优先级与继承&#xff08;已完结&#xff09; 1.1 层叠1.2 继承1.3 特殊值1.4 简写属性1.5 CSS 渐进式增强技术1.6 本章小结 第二章 相对单位&#xff08;已完结&#xff09; 2.1 相对…

Prometheus 云原生 - Prometheus 数据模型、Metrics 指标类型、Exporter 相关

目录 开始 Prometheus 数据类型 简单理解 时序样本 格式 和 命名要求 Metrics 指标类型 Counter 计数器 Gauge Histogram Summary Exporter 相关 概述 Exporter 类型 Exporter 规范 开始 Prometheus 数据类型 简单理解 a&#xff09;安装好 Prometheus 后会暴露…