[Algorithm][综合训练][求最小公倍数][跳台阶][最长回文子串]详细讲解

本文主要是介绍[Algorithm][综合训练][求最小公倍数][跳台阶][最长回文子串]详细讲解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

  • 1.求最小公倍数
    • 1.题目链接
    • 2.算法原理详解 && 代码实现
  • 2.跳台阶
    • 1.题目链接
    • 2.算法原理详解 && 代码实现
  • 3.最长回文子串
    • 1.题目链接
    • 2.算法原理详解 && 代码实现


1.求最小公倍数

1.题目链接

  • 求最小公倍数

2.算法原理详解 && 代码实现

  • 最小公倍数:两数乘积 / 最大公因数
  • 最大公因数:辗转相除法
    • 原理GCD(a, b) == GCD(b, a % b)
    // 非递归版本
    int GCD(int a, int b)
    {while(b != 0){int tmp = b;b = a % b;a = tmp;}return a;
    }int GCD(int a, int b)
    {int tmp = 0;while(a % b){tmp = a % b;a = b;b = tmp;}return b;
    }// 递归版本
    int GCD(int a, int b)
    {if(b == 0){return a;}return GCD(b, a % b);
    }
    
  • 代码
    #include <iostream>
    using namespace std;int GCD(int a, int b)
    {if(b == 0){return a;}return GCD(b, a % b);
    }int main()
    {int a = 0, b = 0;cin >> a >> b;cout << (a * b / GCD(a, b)) << endl;return 0;
    }
    

2.跳台阶

1.题目链接

  • 跳台阶

2.算法原理详解 && 代码实现

  • 自己的版本
    #include <iostream>
    #include <vector>
    using namespace std;int main()
    {int n = 0;cin >> n;vector<int> dp(n + 1, 0);dp[1] = 1, dp[2] = 2;for(int i = 3; i <= n; i++){dp[i] = dp[i - 1] + dp[i - 2];}cout << dp[n] << endl;return 0;
    }
    
  • 优化版本:相较于自己的版本,多了滚动数组进行空间优化
    #include <iostream>
    using namespace std;int main()
    {int n = 0;cin >> n;int a = 1, b = 2, c = 2;for(int i = 3; i <= n; i++){c = a + b;a = b;b = c;}if(n == 0 || n == 1){cout << n << endl;}else{cout << c << endl;}return 0;
    }
    

3.最长回文子串

1.题目链接

  • 最长回文子串

2.算法原理详解 && 代码实现

  • 自己的版本:动态规划 --> 时间/空间复杂度均为 O ( N 2 ) O(N^2) O(N2)
    int getLongestPalindrome(string A) 
    {int n = A.size();vector<vector<bool>> dp(n, vector<bool>(n, false));int len = 1;for(int i = n - 1; i >= 0; i--){for(int j = 0; j < n; j++){if(A[i] == A[j]){// i + 1 < j -> 表示至少有三个字符或以上dp[i][j] = i + 1 < j ? dp[i + 1][j - 1] : true;if(dp[i][j] && j - i + 1 > len){len = j - i + 1;}}}}return len;
    }
    
  • 优化版本:中心扩展算法 --> 时间复杂度 O ( N 2 ) O(N^2) O(N2),空间复杂度 O ( 1 ) O(1) O(1)
    • 枚举中心位置的时候,要考虑回文串长度的奇偶性
    int getLongestPalindrome(string A) 
    {int n = A.size(), len = 1;for(int i = 1; i < n; i++) // 枚举每个中心点{// 当长度是奇数时int left = i - 1, right = i + 1;while(left >= 0 && right < n && A[left] == A[right]){left--;right++;}len = max(len, right - left - 1);// 当长度是偶数时left = i - 1, right = i;while(left >= 0 && right < n && A[left] == A[right]){left--;right++;}len = max(len, right - left - 1);}return len;
    }
    

这篇关于[Algorithm][综合训练][求最小公倍数][跳台阶][最长回文子串]详细讲解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1101946

相关文章

Python pandas库自学超详细教程

《Pythonpandas库自学超详细教程》文章介绍了Pandas库的基本功能、安装方法及核心操作,涵盖数据导入(CSV/Excel等)、数据结构(Series、DataFrame)、数据清洗、转换... 目录一、什么是Pandas库(1)、Pandas 应用(2)、Pandas 功能(3)、数据结构二、安

Apache Ignite 与 Spring Boot 集成详细指南

《ApacheIgnite与SpringBoot集成详细指南》ApacheIgnite官方指南详解如何通过SpringBootStarter扩展实现自动配置,支持厚/轻客户端模式,简化Ign... 目录 一、背景:为什么需要这个集成? 二、两种集成方式(对应两种客户端模型) 三、方式一:自动配置 Thick

Python对接支付宝支付之使用AliPay实现的详细操作指南

《Python对接支付宝支付之使用AliPay实现的详细操作指南》支付宝没有提供PythonSDK,但是强大的github就有提供python-alipay-sdk,封装里很多复杂操作,使用这个我们就... 目录一、引言二、准备工作2.1 支付宝开放平台入驻与应用创建2.2 密钥生成与配置2.3 安装ali

2025版mysql8.0.41 winx64 手动安装详细教程

《2025版mysql8.0.41winx64手动安装详细教程》本文指导Windows系统下MySQL安装配置,包含解压、设置环境变量、my.ini配置、初始化密码获取、服务安装与手动启动等步骤,... 目录一、下载安装包二、配置环境变量三、安装配置四、启动 mysql 服务,修改密码一、下载安装包安装地

RabbitMQ消费端单线程与多线程案例讲解

《RabbitMQ消费端单线程与多线程案例讲解》文章解析RabbitMQ消费端单线程与多线程处理机制,说明concurrency控制消费者数量,max-concurrency控制最大线程数,prefe... 目录 一、基础概念详细解释:举个例子:✅ 单消费者 + 单线程消费❌ 单消费者 + 多线程消费❌ 多

在macOS上安装jenv管理JDK版本的详细步骤

《在macOS上安装jenv管理JDK版本的详细步骤》jEnv是一个命令行工具,正如它的官网所宣称的那样,它是来让你忘记怎么配置JAVA_HOME环境变量的神队友,:本文主要介绍在macOS上安装... 目录前言安装 jenv添加 JDK 版本到 jenv切换 JDK 版本总结前言China编程在开发 Java

Spring Boot Actuator应用监控与管理的详细步骤

《SpringBootActuator应用监控与管理的详细步骤》SpringBootActuator是SpringBoot的监控工具,提供健康检查、性能指标、日志管理等核心功能,支持自定义和扩展端... 目录一、 Spring Boot Actuator 概述二、 集成 Spring Boot Actuat

如何在Java Spring实现异步执行(详细篇)

《如何在JavaSpring实现异步执行(详细篇)》Spring框架通过@Async、Executor等实现异步执行,提升系统性能与响应速度,支持自定义线程池管理并发,本文给大家介绍如何在Sprin... 目录前言1. 使用 @Async 实现异步执行1.1 启用异步执行支持1.2 创建异步方法1.3 调用

Spring Boot 与微服务入门实战详细总结

《SpringBoot与微服务入门实战详细总结》本文讲解SpringBoot框架的核心特性如快速构建、自动配置、零XML与微服务架构的定义、演进及优缺点,涵盖开发环境准备和HelloWorld实战... 目录一、Spring Boot 核心概述二、微服务架构详解1. 微服务的定义与演进2. 微服务的优缺点三

SpringBoot改造MCP服务器的详细说明(StreamableHTTP 类型)

《SpringBoot改造MCP服务器的详细说明(StreamableHTTP类型)》本文介绍了SpringBoot如何实现MCPStreamableHTTP服务器,并且使用CherryStudio... 目录SpringBoot改造MCP服务器(StreamableHTTP)1 项目说明2 使用说明2.1