优选算法——双指针专题 3.快乐数 4.盛水最多的容器

优选算法------双指针专题 3.快乐数 4.盛水最多的容器

一.快乐数

1.题目解析

题目传送门\]([202. 快乐数 - 力扣(LeetCode)](https://leetcode.cn/problems/happy-number/description/)) ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/cd397494ab1a4a1c9f4c8fb38e14fa8f.png) #### 2.原理解析 第一种情况:数最后变成1 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/cf18cb5cbe4e46b1a344c49da95e8ee4.png) 第二种情况:无限循环但不是1 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/72560276497e4dc48cebe3880fee05ef.png) 但两种都可以抽象成一种,有点像之前做过的带环链表 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/539069c85e53436d9ac54bc4d515dc01.png) 解法:快慢双指针 1.定义快慢指针 2.慢指针每次向后移动一步,快指针每次向后移动两步 3.判断相遇时候的值 #### 3.代码实现 ```cpp class Solution { public: int BitSum(int n)//返回每一位数上的平方和 { int sum=0; while(n) { int m=n%10; sum+=m*m; n=n/10; } return sum; } bool isHappy(int n) { int slow=n,fast=BitSum(n); while(slow!=fast) { slow=BitSum(slow); fast=BitSum(BitSum(fast)); } return slow==1; } }; ``` ### 二.盛水最多的容器 \[题目传送门\]([11. 盛最多水的容器 - 力扣(LeetCode)](https://leetcode.cn/problems/container-with-most-water/description/)) #### 1.题目解析 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/c6c5b24bbcf14f2bac9d64f1cdff5082.png) #### 2.原理解析 解法一:暴力枚举 时间复杂度O(N\^2) 会超时 解法二:利用单调性,使用双指针 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/0789c84e1faf430e84eb22a37ed2dc82.png) 在这一组数中拿出一个区间 6,2,5,4 我们先用最两边的数算一个容积,然后小的那个固定住(也就是4) ,向内枚举 如果遇到比它小的数(也就是2),高度跟宽度都减小,v减小 如果遇到比它大的数(也就是5),高度不变(还是4),宽度减小,v减小 所以我们可以直接舍去小的那一个,在研究下一个区间 #### 3.代码实现 ```cpp class Solution { public: int maxArea(vector& height) { int left=0,right=height.size()-1,ret=0; while(left!=right) { int v=min(height[left],height[right])*(right-left); ret=max(ret,v); if(height[left]

相关推荐
归去_来兮12 小时前
拉格朗日插值算法原理及简单示例
算法·数据分析·拉格朗日插值
千寻girling19 小时前
Python 是用来做 AI 人工智能 的 , 不适合开发 Web 网站 | 《Web框架》
人工智能·后端·算法
颜酱1 天前
一步步实现字符串计算器:从「转整数」到「带括号与优化」
javascript·后端·算法
不想写代码的星星1 天前
std::function 详解:用法、原理与现代 C++ 最佳实践
c++
CoovallyAIHub2 天前
语音AI Agent编排框架!Pipecat斩获10K+ Star,60+集成开箱即用,亚秒级对话延迟接近真人反应速度!
深度学习·算法·计算机视觉
NineData2 天前
数据库管理工具NineData,一年进化成为数万+开发者的首选数据库工具?
运维·数据结构·数据库
木心月转码ing2 天前
Hot100-Day14-T33搜索旋转排序数组
算法
会员源码网2 天前
内存泄漏(如未关闭流、缓存无限增长)
算法
颜酱2 天前
从0到1实现LFU缓存:思路拆解+代码落地
javascript·后端·算法
颜酱2 天前
从0到1实现LRU缓存:思路拆解+代码落地
javascript·后端·算法