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

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

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

一.快乐数

1.题目解析

[题目传送门](202. 快乐数 - 力扣(LeetCode))

在这里插入图片描述

2.原理解析

第一种情况:数最后变成1

在这里插入图片描述

第二种情况:无限循环但不是1

在这里插入图片描述

但两种都可以抽象成一种,有点像之前做过的带环链表

在这里插入图片描述

解法:快慢双指针

1.定义快慢指针

2.慢指针每次向后移动一步,快指针每次向后移动两步

3.判断相遇时候的值

3.代码实现

classSolution{public:intBitSum(int n)//返回每一位数上的平方和{int sum=0;while(n){int m=n%10; sum+=m*m; n=n/10;}return sum;}boolisHappy(int n){int slow=n,fast=BitSum(n);while(slow!=fast){ slow=BitSum(slow); fast=BitSum(BitSum(fast));}return slow==1;}};

二.盛水最多的容器

[题目传送门](11. 盛最多水的容器 - 力扣(LeetCode))

1.题目解析

在这里插入图片描述

2.原理解析

解法一:暴力枚举

时间复杂度O(N^2) 会超时

解法二:利用单调性,使用双指针

在这里插入图片描述

在这一组数中拿出一个区间 6,2,5,4

我们先用最两边的数算一个容积,然后小的那个固定住(也就是4) ,向内枚举

如果遇到比它小的数(也就是2),高度跟宽度都减小,v减小

如果遇到比它大的数(也就是5),高度不变(还是4),宽度减小,v减小

所以我们可以直接舍去小的那一个,在研究下一个区间

3.代码实现

classSolution{public:intmaxArea(vector<int>& 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]<height[right]) left++;else right--;}return ret;}};

Read more

千面之法: 释放 C++ 多态的灵活威力

千面之法: 释放 C++ 多态的灵活威力

目录 1:多态的概念 1.1:概念 2.多态的定义与实现 2.1:多态的构成条件 2.2:虚函数 2.3:虚函数的重写 2.3.1:虚函数重写的两个例外 2.3.1.1:协变(基类与派生类函数的返回值不同,基类虚函数返回基类对象的指针或引用,派生类虚函数返回派生类对象的指针或引用时) 2.3.1.2:析构函数的重写 2.4:C++11 override和final 2.4.1:final关键字 2.4.2:override关键字 2.5:重载、

By Ne0inhk
【C++】类型转换

【C++】类型转换

📝前言: 这篇文章我们来讲讲C++的类型转换 🎬个人简介:努力学习ing 📋个人专栏:C++学习笔记 🎀ZEEKLOG主页 愚润求学 🌄其他专栏:C语言入门基础,python入门基础,python刷题专栏,Linux 文章目录 * 一,C语言类型转换 * 1. 隐式类型转换 * 2. 显式类型转换 * 二,C++隐式类型转换(重点) * 1. 内置转自定义 * 2. 自定义转内置 * 3. 自定义转自定义 * 三,C++显式类型转换(重点) * 1. 类型安全 * 2. 4个显式强制类型转换运算符 * 2.1 static_cast * 2.2 reinterpret_cast * 2.3

By Ne0inhk
【C++】第二十七节—C++11(下) | 可变参数模版+新的类功能+STL中一些变化+包装器

【C++】第二十七节—C++11(下) | 可变参数模版+新的类功能+STL中一些变化+包装器

Hi,好久不见,我是云边有个稻草人,偶尔中二的C++领域博主与你分享专业知识U·ェ·U 《C++》本篇文章所属专栏—持续更新中—欢迎订阅~ 目录 五、可变参数模版 1. 基本语法及原理 2. 包扩展 方式一 方式二 3. empalce系列接口 六、新的类功能 1. 默认的移动构造和移动赋值 2. 成员变量声明时给缺省值 3. defult和delete 4. final与override 七、STL中一些变化 八、包装器 1. function 2. bind 正文开始—— 五、可变参数模版 1. 基本语法及原理 * C++11支持可变参数模板,也就是说支持可变数量参数的函数模板和类模板,可变数目的参数被称 为参数包,

By Ne0inhk
【C++】size_t全面解析与深入拓展

【C++】size_t全面解析与深入拓展

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳]本文专栏: C++ 文章目录 * 💯前言 * 💯一、什么是`size_t`? * 为什么需要`size_t`? * 💯二、`size_t`的特性与用途 * 1. `size_t`是无符号类型 * 示例: * 2. `size_t`的跨平台适应性 * 示例对比: * 3. `size_t`与标准库 * 4. 与`unsigned int`的对比 * 💯三、潜在的陷阱与注意事项 * 1. 类型转换问题 * 示例: * 2. 与其他类型的运算 * 示例: * 💯四、小结 💯前言 在C++的开发过程中,

By Ne0inhk