双指针算法: 快乐数 与 盛水最多的容器

news2024/11/21 2:35:56

在这里插入图片描述

🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨
🐻推荐专栏1: 🍔🍟🌯C语言初阶
🐻推荐专栏2: 🍔🍟🌯C语言进阶
🔑个人信条: 🌵知行合一

前言

声明:题目来源于: 力扣

一、快乐数

题目链接: 传送门

(1) 题目描述

编写一个算法来判断一个数 n 是不是快乐数

「快乐数」 定义:

对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。
然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。
如果这个过程 结果为 1,那么这个数就是快乐数。

返回值:
如果 n快乐数 就返回 true
不是,则返回 false

示例:

示例 1:

输入:

n = 19

输出:true

解释:

12 + 92 = 82
82 + 22 = 68
62 + 82 = 100
12 + 02 + 02 = 1

示例 2:

输入:n = 2
输出:false

(2)解题思路

刚开始见到这道题的时候,毫无思路,知道会循环又如何?什么时候结束循环才麻烦。
我总不能每次循环都判断结果是否为1吧?计算是这样,那要是一直不为1咋办,死循环,也就死翘翘了。

快乐数,有点也不快乐!
在这里插入图片描述

总不能不做吧,我们不妨画图分析一下。
在这里插入图片描述
是不是有点眼熟,画完图以后,我们惊奇的发现,这好像与带环链表问题极其相似。

环形链表博客(第二题)

在环形链表II 中,我们向后一步是next指针往后遍历,本题是每一次将该数替换为它每个位置上的数字的平方和。

  1. 我们可以将 “求每个位数的平方和”封装成一个函数(func)。
  2. 定义快慢指针:
    快指针每次调用两次func函数。
    慢指针每次调用一次func函数。
  3. 快慢指针相遇时,即为环的入口点。
  4. 入口点是1,则为快乐数,返回ture
    入口点非1,则不是快乐数,返回false

(3)代码展示:

class Solution {
public:
    bool isHappy(int n) {
        int slow=n;
        int fast=n;
        do{
            slow=func(slow);
            fast=func(func(fast));
        }while(slow!=fast);
		
		//跳出循环,此时快慢指针相遇
        if(slow!=1)return false;
        return true;
        
    }
    int func(int n){	//求每个位数的平方和
        int ret=0;
        while(n){
            int mod=n%10;
            ret+=(mod*mod);
            n/=10;
        }
        return ret;
    }
};

二、盛水最多的容器

(1) 题目描述

给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0)(i, height[i])

找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。

返回容器可以储存的最大水量。

示例:

在这里插入图片描述

(2)解题思路

其实题目意思很简单,看图就很容易理解,就是寻找两个下标位置,将其最短的作为容器的高,两个坐标的距离作为容器的底,求出容积最大情况时,两个下标的位置。

  1. 定义两个指针:
    (1)left最初位置
    (2)right最后一个位置
  2. 先计算这边界状态时,容器的容量。
  3. 如果左边界比右边界高,则移动右边界。

如果我们移动左边界:
  取到比右边界的值大: 则容器的高度依旧是右边界,低长度下降,总容量下降
  取到比右边界的值小,则容器的高度是左边界,这样的左边界只会让高度更低,而低的长度下降,总容量下降

如果我们移动右边界:
  取到比左边界的值大: 则容器的高度是左边界,高度会增加,虽然底的长度下降,但是容量可能上升
  取到比左边界的值小,则容器的高度是右边界,高度更低,低的长度下降,总容量下降

  1. 如果右边界比左边界高,则移动左边界。
    同理,这里就不再分析了。

  2. 计算移动后的容量,并判断是否需要更新容量。

(3)代码展示:

class Solution {
public:
    int maxArea(vector<int>& height) {
        int left=0,right=height.size()-1;

        //边界时的面积
        int maxv=(right-left)* min(height[left], height[right]);

        while(left<right){
          
          //如果左边界比右边界高,则移动右边界
            if(height[left]>height[right]) --right;
            else ++left;
            //计算移动边界以后的面积
            int v=(right-left)*min(height[left],height[right]);
            //取最大面积
            maxv=max(maxv,v);
        }
        return maxv;
    }
};

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

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

相关文章

Net8 EFCore Mysql 连接

一、安装插件 Pomelo.EntityFrameworkCore.MySq (这里要选8.0.0以上版本低版本不支持.net8) 二、配置数据库连接串 appsettings.json 中配置数据库连接串 "ConnectionStrings": {"Connection": "server172.18.2.183;port3306;databasestudents;uid…

基于单片机远程温控检测系统

**单片机设计介绍&#xff0c;基于单片机远程温控检测系统&#xff08;含上位机&#xff09; 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机的远程温控检测系统可以用于远程监测和控制温度&#xff0c;实现远程温度监…

【C++初阶】六、类和对象(初始化列表、static成员、友元、内部类)

相关代码gitee自取&#xff1a; C语言学习日记: 加油努力 (gitee.com) 接上期&#xff1a; 【C初阶】五、类和对象 &#xff08;日期类的完善、流运算符重载函数、const成员、“&”取地址运算符重载&#xff09;-CSDN博客 目录 ​​​​​​​一 . 初始化列表 构造函数…

【运筹优化】运筹学导论:求解线性规划问题 - 单纯形法

文章目录 一、单纯形法的实质&#xff08;几何原理&#xff09;1.1 示例的求解1.2 关键的解原理1.2.1 解原理11.2.2 解原理21.2.3 解原理31.2.4 解原理41.2.5 解原理51.2.6 解原理6 二、构建单纯形法&#xff08;代数原理&#xff09;三、单纯形法的代数形式3.1 初始化3.2 最优…

SPM/SCM 流量跟踪体系

SPM SPM&#xff08;shopping page mark&#xff0c;导购页面标记&#xff09; 是淘宝社区电商业务&#xff08;xTao&#xff09;为外部合作伙伴&#xff08;外站&#xff09;提供的跟踪引导成交效果数据的解决方案 注&#xff1a;也有解释 SPM 为超级位置模型(Super Position…

研习代码 day47 | 动态规划——子序列问题3

一、判断子序列 1.1 题目 给定字符串 s 和 t &#xff0c;判断 s 是否为 t 的子序列。 字符串的一个子序列是原始字符串删除一些&#xff08;也可以不删除&#xff09;字符而不改变剩余字符相对位置形成的新字符串。&#xff08;例如&#xff0c;"ace"是"abcde&…

无需公网IP!Apache服务器本地部署与内网穿透实现公网访问

Apache服务安装配置与结合内网穿透实现公网访问 文章目录 Apache服务安装配置与结合内网穿透实现公网访问前言1.Apache服务安装配置1.1 进入官网下载安装包1.2 Apache服务配置 2.安装cpolar内网穿透2.1 注册cpolar账号2.2 下载cpolar客户端 3. 获取远程桌面公网地址3.1 登录cpo…

VPS简介:基于Amazon Ligtsail的概述

当你作为一个开发者&#xff0c;你想要开发自己的系统&#xff0c;构建自己的系统架构时&#xff0c;你会有以下两种选择&#xff1a;第一种就是亲自去挑选组件&#xff0c;例如&#xff1a;云服务器、存储、IP地址等等&#xff0c;然后再花时间自己组装起来&#xff0c;就像该…

天翼云:“百万IOPS”助推政企上云

随着数字化转型的加速&#xff0c;越来越多的企业选择了业务上云。众所周知&#xff0c;不论是政企关键/核心业务中的大型数据库、NoSQL、AI训练&#xff0c;还是互联网业务中的游戏、渲染等场景&#xff0c;对数据读写IOPS和时延有极高的要求。作为全球领先的云服务商&#xf…

如何打印社保参保凭证

西安市&#xff1a; 陕西政务服务网&#xff1a; 个人服务 珠海市&#xff1a; 广东政务服务网&#xff1a; 用户登录 | 珠海市人力资源和社会保障网上服务平台 武汉市&#xff1a; 湖北政务服务网&#xff1a; 湖北政务服务网

Android实验:绑定service实验

目录 实验目的实验内容实验要求项目结构代码实现代码解释结果展示 实验目的 充分理解Service的作用&#xff0c;与Activity之间的区别&#xff0c;掌握Service的生命周期以及对应函数&#xff0c;了解Service的主线程性质&#xff1b;掌握主线程的界面刷新的设计原则&#xff…

JavaWeb 前端工程化

前端工程化是使用软件工程的方法来单独解决前端的开发流程中模块化、组件化、规范化、自动化的问题,其主要目的为了提高效率和降低成本。 前端工程化实现技术栈 前端工程化实现的技术栈有很多,我们采用ES6nodejsnpmViteVUE3routerpiniaaxiosElement-plus组合来实现 ECMAScri…

游戏被流量攻击会有什么样的影响,该用什么样的防护方式去处理

德迅云安全-领先云安全服务与解决方案提供商德迅云游戏盾专门针对游戏进行防护&#xff0c;可免费提供防护方案~ 如果游戏被流量攻击会产生以下影响&#xff1a; 服务器过载&#xff1a;流量攻击会导致游戏服务器接收到的请求数量急剧增加&#xff0c;超出服务器的处理能力。这…

Reactor实战,创建一个简单的单线程Reactor(理解了就相当于理解了多线程的Reactor)

单线程Reactor package org.example.utils.echo.single;import java.io.IOException; import java.net.InetSocketAddress; import java.nio.channels.*; import java.util.Iterator; import java.util.Set;public class EchoServerReactor implements Runnable{Selector sele…

Python中PyQt5可视化界面通过拖拽来上传文件

注&#xff1a;这个窗口提供了一个快速上传文件的小tips&#xff0c;如果需要对上传的文件进行进一步处理的可以在“processFiles”函数或者编写其它函数进行扩充就可以。 1、需要安装模块 pip install PyQt5 2、运行效果 1、通过拖拽的方式上传需要的文件到窗口&#xff0c;会…

【灵魂 |数据结构与算法】 数据结构必备经法(开山篇),一起修炼算法经法!

&#x1f935;‍♂️ 个人主页: AI_magician &#x1f4e1;主页地址&#xff1a; 作者简介&#xff1a;CSDN内容合伙人&#xff0c;全栈领域优质创作者。 &#x1f468;‍&#x1f4bb;景愿&#xff1a;旨在于能和更多的热爱计算机的伙伴一起成长&#xff01;&#xff01;&…

微信小程序引入node_modules依赖

微信小程序不支持直接读取node_modules 首先在目录文件夹下cmd输入npm init命令 D:\小程序\project\calendar\calendar_1>npm init This utility will walk you through creating a package.json file. It only covers the most common items, and tries to guess sensible…

巧用乖离率BIAS,捕捉买卖信号

一、认识BIAS乖离率 BIAS&#xff0c;中文名称是乖离率&#xff0c;它表示一定时期内股价与其MA均线的偏离程度。这个指标的理论基础是如果股价偏离均线太远&#xff0c;不管股价在均线之上还是在均线之下&#xff0c;它最终都会向均线靠拢。 乖离率&#xff08;当日收盘价-N日…

德国进口高速主轴电机在机器人上的应用及选型方案

随着机器人技术的日新月异&#xff0c;高速主轴电机在机器人领域的应用也日趋广泛。德国进口的SycoTec高速主轴电机&#xff0c;以其高转速、高精度、高刚度的特点&#xff0c;在机器人的切割、铣削、钻孔、去毛刺等加工应用中发挥着关键作用。 一、高速主轴电机的特点 SycoT…

外汇天眼:想像巴菲特那样纵横市场?那你和他之间就差个它...

在金融市场上&#xff0c;有些人以巴菲特为榜样&#xff0c;希望像他一样纵横市场&#xff0c;成为投资大师。然而大多数人只是看到了巴菲特表面的成功&#xff0c;却忽视了他在投资过程中所付出的努力和智慧。实际上&#xff0c;如果你想成为像巴菲特那样的投资者&#xff0c;…