2024年10月28日练习(双指针算法)
一.11. 盛最多水的容器 - 力扣(LeetCode)
1.题目描述:
这个题目代表的意思就是数组上每个对应的值就相当于每条垂直线的高度,就相当于短板效应,两
个高度的线会取最短的长度因为那样水才不会漏。而两条线的数组的下标相减就相当于长度,而
容积就是长度乘以高度。而这里就是找容积最高的。
2.算法原理:
方法一:
暴力解法,就是将所有情况都过一遍,然后找出容积最大的那种情况,这里用两层for循环即
可解决,就是先固定一条线,然后另一条线走,也就是固定的那条线就是外层循环,另一条线走就
是内层循环。但是这样的时间复杂度就是O(n^2)这样时间就会超时,是错误的。
方法二:
这是我们利用数组里的一小段分析出来的规律,那么要想找到整个数组就要按照这种规律来,先直
接找一头一尾的容积,然后记录下来:
如果左边指针的数小于右边指针的数那么就左边的加加,然后得到一个新的容积,然后比较一下这
两个容积的大小:
如果右边的数小于左边的数,那么右边减减,得到一个新的容积再去比较:
就这样一步步比较,然后直到两个指针相遇就结束循环,然后找到最大的容积。
3.代码展示:
class Solution {
public:int maxArea(vector<int>& height) {int left=0;int right=height.size()-1;int ret=0;while(left<right){int v=min(height[left],height[right])*(right-left);ret=max(ret,v);if(height[left]>height[right]){right--;}else{left++;}} return ret;}
};
二.202. 快乐数 - 力扣(LeetCode)
1.题目描述:
也就是拆解每一位数然后平方再加在一起就和,然后如果最后这样到1了,那么就是快乐数了,如
果一直循环到不了1,那么就不是快乐数。
现在看两个例子就能更加显而易见了:
这个就是快乐数的循环情况。
这种就是无限循环但始终出现不了一的情况。
这题目的意思也就是我们上面说的那两种情况,就都是会有环出现的
2.算法原理:
总结一下上面讲到的两种情况:
第一种情况就是快乐数的情况,循环里一直是1,而第二种情况是不是快乐数,但其始终会出现循
环的情况。
这图一画就想到了之前做到过的题目就是判断一个链表是否是循环链表的那个题目:
环形链表题解析-CSDN博客
在这里我们仅需要判断一下这个环里面的数是否为1即可,在环形链表的题目中我们判断链表是否
有环,利用的是快慢指针来写的,所以这里我们也可以用快慢双指针。
这里思想不要被限制死了,并不是定义两个真正的指针,这里是利用每次拆分出来的数作为指针来
移动的:
变一次那么slow就变成4,变两次那么fast变成16:
所以接下来的就是利用数来操作快慢双指针的。
3.代码展示:
class Solution {
public:int Sum(int n)//用来拆分每位数然后求和{int sum=0;while(n){int tmp=n%10;sum+=tmp*tmp;n/=10;}return sum;}bool isHappy(int n) {int slow=n,fast=Sum(n);while(slow!=fast){slow=Sum(slow);//慢指针走一步fast=Sum(Sum(fast));//快指针走两步}//此时退出循环时已经相遇,此时判断一下相遇的值是否为1即可:return slow==1;}
};
相关文章:

2024年10月28日练习(双指针算法)
一.11. 盛最多水的容器 - 力扣(LeetCode) 1.题目描述: 这个题目代表的意思就是数组上每个对应的值就相当于每条垂直线的高度,就相当于短板效应,两 个高度的线会取最短的长度因为那样水才不会漏。而两条线的数组的下标…...

Objective-C 音频爬虫:实时接收数据的 didReceiveData_ 方法
在互联网技术领域,数据的获取和处理是至关重要的。尤其是对于音频内容的获取,实时性和效率是衡量一个爬虫性能的重要指标。本文将深入探讨在Objective-C中实现音频爬虫时,如何高效地使用didReceiveData:方法来实时接收数据,并通过…...

提升网站流量和自然排名的SEO基本知识与策略分析
内容概要 在当今数字化时代,SEO(搜索引擎优化)成为加强网站可见度和提升流量的重要工具。SEO的基础知识包括理解搜索引擎的工作原理,以及如何通过优化网站内容和结构来提高自然排名。白帽SEO和黑帽SEO代表了两种截然不同的策略&a…...
雷池社区版compose文件配置讲解--fvm
在现代网络安全中,选择合适的 Web 应用防火墙至关重要。雷池(SafeLine)社区版免费切好用。为网站提供全面的保护,帮助网站抵御各种网络攻击。 docker-compose.yml 文件是 Docker Compose 的核心文件,用于定义和管理多…...

基于51单片机的智能断路器proteus仿真
地址: https://pan.baidu.com/s/16lfGgrgVr9V7JehonMNVQA 提取码:1234 仿真图: 芯片/模块的特点: AT89C52/AT89C51简介: AT89C52/AT89C51是一款经典的8位单片机,是意法半导体(STMicroelectro…...

(N-154)基于springboot酒店预订管理系统
开发工具:IDEA 服务器:Tomcat9.0, jdk1.8 项目构建:maven 数据库:mysql5.7 前端技术:AdminLTEBootstrapLayUIHTMLjQuery 服务端技术:springbootmybatis-plusthymeleaf 本项目分前台和后台…...

elasticsearch 8.x 插件安装(三)之拼音插件
elasticsearch 8.x 插件安装(三)之拼音插件 elasticsearch插件安装合集 elasticsearch插件安装(一)之ik分词器安装(含MySQL更新) elasticsearch 8.x插件(二)之同义词安装如何解决…...

快速遍历包含合并单元格的Word表格
Word中的合并表格如下,现在需要根据子类(例如:果汁)查找对应的品类,如果这是Excel表格,那么即使包含合并单元格,也很容易处理,但是使用Word VBA进行查找,就需要一些技巧。…...
手机收银云进销存管理软件,商品档案Excel格式批量导入导出,一键导入Excel的商品档案
如果您有Excel的商品档案,那么就可以批量导入到我们的手机云进销存软件系统里,就不需要人工手工一个个商品的新建商品档案,大大提高工作效率。如果您看下面的步骤不会操作,可以联系我们技术支持,来帮您把商品档案导入。…...
html 中识别\n自动换行
CSS实现:white-space <div style"white-space: pre-wrap;" v-html"str"> </div>white-space: normal|nowrap|pre|pre-line|pre-wrap|initial|inherit;值描述换行符空格和制表符文字换行行尾空格normal默认。空白会被浏览器忽略。合…...
用QWebSocketServer写websocket服务端
1. 引入必要的头文件 #include <QCoreApplication> #include <QWebSocketServer> #include <QWebSocket> #include <QDebug> #include <QObject>QCoreApplication:用于创建控制台应用的事件循环。QWebSocketServer:提供 …...
云原生后端:现代应用架构的核心力量
云原生后端:现代应用架构的核心力量 云原生后端是基于云环境进行设计和开发的一种理念,利用云服务和云原生技术构建的服务端应用。它旨在提供灵活、高效、弹性和可扩展的解决方案,成为推动应用现代化的核心力量。本文将详细探讨云原生后端的…...

arcgis中dem转模型导入3dmax
文末分享素材 效果 1、准备数据 (1)DEM (2)DOM 2、打开arcscene软件 3、加载DEM、DOM数据 4、设置DOM的高度为DEM...

Python自动化测试中的Mock与单元测试实战
在软件开发过程中,自动化测试是确保代码质量和稳定性的关键一环。而Python作为一门灵活且强大的编程语言,提供了丰富的工具和库来支持自动化测试。本文将深入探讨如何结合Mock与单元测试,利用Python进行自动化测试,以提高代码的可…...
物联网海量数据下的时序数据库选型:InfluxDB、TDEngine、MongoDB与HBase对比与建议
随着物联网(IoT)的普及,各行业纷纷部署大量传感器、设备生成的数据流,面对如此海量的时间序列数据,如何高效存储、查询和分析成为关键。为此,时序数据库(Time Series Database, TSDB)…...

Python中的数据可视化:Matplotlib基础与高级技巧
Python中的数据可视化:Matplotlib基础与高级技巧 数据可视化是数据分析和数据科学中不可或缺的一部分。通过图表,我们可以更直观地观察数据的分布和趋势。Matplotlib作为Python最基础、也是最广泛使用的绘图库之一,不仅支持多种常用图表&…...
数组名和指针数组名深度复习
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> //sizeof只关注占用内存空间的大小,不在乎内存中存放的是什么 //是操作符 /* int main() { char arr[] { "abcdef" }; //a b c d e f \0 printf("%d\n", sizeof(arr));//…...

Linux 诞生
目录 Linux诞生背景 Linus Torvalds的创举 Linux内核的首次发布 Linux诞生背景 在计算机操作系统的发展史上,Linux是一个重要的里程碑。它的诞生源于对自由、开放和协作精神的追求,以及对Unix操作系统的深入研究和改进。 在1991年之前,Un…...
借助Aspose.Email,管理受密码保护的 PST 文件
在当今的数字环境中,保护您的数据比以往任何时候都更加重要。确保您的电子邮件数据受到密码保护是维护安全性的关键步骤。对于使用 Microsoft Outlook 数据的开发人员来说,管理受密码保护的 PST(个人存储表)文件可能是一项关键任务…...

MySQL数据库MHA高可用
目录 一、MHA简述 二、MHA 的组成 三、MHA 的特点 四、MHA工作原理 五、MHA部署步骤 六、搭建 MySQL MHA MHA一主两从高可用集群示意图 实验环境 1. Master、Slave1、Slave2 节点上安装 mysql5.7 2. 关闭防火墙 3. 修改 Master、Slave1、Slave2 节点的主机名 4. 修…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

Python:操作 Excel 折叠
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

苍穹外卖--缓存菜品
1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

Python Ovito统计金刚石结构数量
大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...
CSS | transition 和 transform的用处和区别
省流总结: transform用于变换/变形,transition是动画控制器 transform 用来对元素进行变形,常见的操作如下,它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...
LRU 缓存机制详解与实现(Java版) + 力扣解决
📌 LRU 缓存机制详解与实现(Java版) 一、📖 问题背景 在日常开发中,我们经常会使用 缓存(Cache) 来提升性能。但由于内存有限,缓存不可能无限增长,于是需要策略决定&am…...

脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)
一、OpenBCI_GUI 项目概述 (一)项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台,其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言,首次接触 OpenBCI 设备时,往…...

破解路内监管盲区:免布线低位视频桩重塑停车管理新标准
城市路内停车管理常因行道树遮挡、高位设备盲区等问题,导致车牌识别率低、逃费率高,传统模式在复杂路段束手无策。免布线低位视频桩凭借超低视角部署与智能算法,正成为破局关键。该设备安装于车位侧方0.5-0.7米高度,直接规避树枝遮…...

tauri项目,如何在rust端读取电脑环境变量
如果想在前端通过调用来获取环境变量的值,可以通过标准的依赖: std::env::var(name).ok() 想在前端通过调用来获取,可以写一个command函数: #[tauri::command] pub fn get_env_var(name: String) -> Result<String, Stri…...