优选算法——双指针专题 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

Flutter 组件 humanize 的适配 鸿蒙Harmony 深度进阶 - 驾驭多语言复数逻辑算法、实现鸿蒙端中式大额单位感知与极致人性化文本渲染方案

Flutter 组件 humanize 的适配 鸿蒙Harmony 深度进阶 - 驾驭多语言复数逻辑算法、实现鸿蒙端中式大额单位感知与极致人性化文本渲染方案

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 组件 humanize 的适配 鸿蒙Harmony 深度进阶 - 驾驭多语言复数逻辑算法、实现鸿蒙端中式大额单位感知与极致人性化文本渲染方案 前言 在前文我们掌握了 humanize 进行基础数据转换的方法。但在鸿蒙(OpenHarmony)面向全球市场的布局中,真正的技术挑战往往隐藏在极其琐碎的“语言表达”中。例如:在英文中我们说 1 items 是错误的,必须是 1 item 与 2 items;而在中文环境下,我们虽然没有复数形变,但却有“万、亿”这类独特的四位一级计数逻辑。 一个真正具备“高级感”的鸿蒙应用,不应在数据展示上显得僵硬且带有明显的机器翻译痕迹。 本文将作为 humanize 适配的进阶篇,带你攻克多语言复数(Pluralization)

By Ne0inhk

傅里叶变换 | FFT 与 DFT 原理及算法

注:本文为 “傅里叶变换 | FFT 与 DFT” 相关合辑。 英文引文,机翻未校。 中文引文,略作重排。 图片清晰度受引文原图所限。 如有内容异常,请看原文。 Fast Fourier Transform (FFT) 快速傅里叶变换(FFT) In this section we present several methods for computing the DFT efficiently. In view of the importance of the DFT in various digital signal processing applications, such as linear filtering,

By Ne0inhk
《数据结构风云》递归算法:二叉树遍历的精髓实现

《数据结构风云》递归算法:二叉树遍历的精髓实现

🔥@晨非辰Tong: 个人主页 👀专栏:《C语言》、《数据结构与算法入门指南》 💪学习阶段:C语言、数据结构与算法初学者 ⏳“人理解迭代,神理解递归。” 文章目录 * 引言 * 一、单值二叉树 * `1.目标特征描述:什么单值二叉树` * `2.目标实现示例:` * `3.算法思路:` * `3.1 具体代码实现` * 二、相同的树 * `1.目标特征描述:什么是相同的树` * `2.目标实现示例` * `3.算法思路` * `3.1 具体代码实现` * 三、另一棵树的子树 * `1.目标特征描述` * `2.目标实现示例` * `3.算法思路` * `3.1 具体代码实现` * 四、对称二叉树 * `1.

By Ne0inhk
【启发式算法】RRT*算法详细介绍(Python)

【启发式算法】RRT*算法详细介绍(Python)

📢本篇文章是博主人工智能(AI)领域学习时,用于个人学习、研究或者欣赏使用,并基于博主对相关等领域的一些理解而记录的学习摘录和笔记,若有不当和侵权之处,指出后将会立即改正,还望谅解。文章分类在👉启发式算法专栏:        【启发式算法】(9)---《RRT*算法详细介绍(Python)》 【启发式算法】RRT*算法详细介绍(Python) 目录 1. RRT*算法 2.算法原理 RRT*与RRT的区别 3.算法步骤 步骤详细说明 4.RRT*的关键原理 1. 树的扩展 2. 路径优化 3. 连接最短路径 4. 渐进最优性 [Python] RRT*算法实现 [Results] 运行结果 [Notice]  注意事项

By Ne0inhk