LeetCode刷题双指针(快乐数+盛最多水的容器)Java

WinInet 编程:MFC 中的互联网编程 WinInet 是一套 Windows API(应用程序编程接口),用于实现互联网应用程序的网络通信和数据传输。WinInet 抽象了底层网络协议和硬件细节,为程序员提供了一套统一的接口,简化了互联网应用程序的开发过程。WinInet 广泛应用于各种 Windows 应用程序中,包括网页浏览器、下载管理器、网络游戏等。MFC WinInet 是一套强大的类库,为 MFC 程序员提供了在 Windows 平台上实现互联网通信和数据传输的工具。 阅读详情

一,快乐数

解题思路:

本题给我们明确说明了,不管是快乐数还是不是快乐数,我们最后都会进入一个循环,快乐数也就是无限的1循环,因为1再怎么平方也是1,然后不是快乐数的阿虎就是无限循环但是不是1,这个怎么证明呢,就拿题目中的2来说,我们通过计算得知,在我们计算到后面的时候,就会再次出现4这个数字,就会陷入循环,所以我们这题的解题思路就是,通过快慢指针,在循环里面相遇之后,得到的数字是不是1

代码演示:

class Solution {
    //写一个方法实现每个位置上的数字的平方和相加
    public int sum(int n){
        int sumn=0;
        while(n!=0){
            int x=n%10;
            sumn +=x*x;
            n=n/10;
        }
        return sumn;
    }
    public boolean isHappy(int n) {
        //先定义a是第一个数字,也就是慢的那个。再定义b为计算一次的数字,也就是快的那个,至于为什么不定义一样的数字,因为我们要判断是否相等,如果一样的话直接跳出循环了
        int a=n;
        int b=sum(n);
        while(a!=b){
            a=sum(a);
            b=sum(sum(b));
        }
        if(a==1){
            return true;
        }else{
            return false;
        }
    }
}

二,盛最多水的容器

解题思路:

这题的核心也是使用双指针的方式,一个指针在最左边,一个指针在最右边,我们的容积=底*高,我们最开始最左以及最右就相当于是底是整个数组,然后我们就需要让相对较小的那一个数字指向的指针向内移动,这样才可能会出现高变高的情况,并且我们每次移动较小的那一边的指向一次,并且记录下来此时的容积大小,最后当我们的两个指针相遇的时候,我们就在刚刚计算的所有容积计算一个max,找到最大的就好了

代码演示:

class Solution {
    public int maxArea(int[] height) {
        int left=0;
        int right=height.length-1;
        int ret=0;
        while(left<right){
            //计算容积
            int v=Math.min(height[left],height[right])*(right-left);
            ret=Math.max(ret,v);
            //较小的移动
            if(height[left]>height[right]){
                right--;
            }else{
                left++;
            }
        }
        return ret;
    }
}

100天精通Python(可视化篇)——第98天:Pyecharts绘制多种炫酷日历图参数说明+代码实战 一、日历图介绍 二、基础配置 1. 配置项类 2. 添加函数 3. 日期标签配置 4. 坐标系配置 三、日历图实战 1. 基础日历图 2. 日历热图 阅读详情

相关推荐

从BIOS到路由器:深入拆解SPI NOR Flash的硬件连接与‘芯片内执行’(XIP)奥秘

本文深入解析SPI NOR Flash的硬件连接与‘芯片内执行’(XIP)技术,从BIOS到路由器的应用场景出发,详细介绍了其架构精髓、典型连接方案、时序设计及性能优化方法。通过实际案例和参数对比,帮助开发者掌握NOR Flash在嵌入式系统中的关键作用与设计技巧,提升电路设计效率与可靠性。

weixin_30522183的博客 492

JAVA刷题记录:专题一 双指针

【代码】JAVA刷题记录:专题一 双指针。

yonpiguxiao的博客 191

动态刷新曲线_【GhPython应用】利用反射刷新Image sampler组件

【版权声明】| 作者:月之眼|案例图片来源:Sergiu Radu Pop的facebook| 如有侵权,请联系大水牛平台|如果觉得文章不错,欢迎分享效果展示利用python刷新Image sampler组件,主要的思路就是X输入端:输入要切换的图片路径,我的案例中输入了9张图片。然后通过100毫秒切换一张图片显示,来达到动态显示效果。代码分析run输入端类型:bool (I...

weixin_42393829的博客 532

【优选算法 — 双指针】双指针小专题

【优选算法 — 双指针】双指针小专题 和为 s 的两个数 快乐数 盛最多水的容器 三数之和 四数之和

OuO-1 的博客 2677

SAR ADC和sigma delta ADC的区别

0、ADC基本概念 ADC,即analog to digital converter,模拟到数字的转换器,简称模数转换器。 为什么需要ADC?因为现实的世界中,电信号是连续的,例如心电信号,或者声音信号,这些连续的信号被称为“模拟信号”。 图1:心电信号 图2:声音信号 然而这种连续的信号是无法被计算机处理的,计算机只认识0和1组成的“数字信号“。ADC就充当了这样一个桥梁,将“模拟信号”转换为计算机能识别的“数字信号”。举个例子,当前的心电电压为1.2V(实际没有这么高),ADC可能会得

长河柱天的博客 2万+

手把手教你学Simulink——基于全桥 LLC 谐振变换器的双向 DC-DC 建模与仿真

本文详细介绍了基于Simulink的双向全桥LLC谐振变换器建模与仿真方法。内容涵盖:1)LLC谐振变换器背景与双向化挑战;2)系统架构设计及关键数学推导(FHA增益分析、双向控制逻辑);3)Simulink建模步骤(功率级搭建、PWM生成、同步整流实现);4)仿真结果分析(正向/反向工作验证、ZVS特性);5)工程实践建议(增益微调、代码生成与HIL测试)。通过手把手教学,帮助读者掌握950V↔48V双向LLC变换器的完整设计流程,实现高效率能量双向流动的同时保持软开关特性,适用于储能系统、车载充电等应用

MHD0815的博客 179

基础算法之双指针--Java实现(上)--LeetCode题解:移动零-复写零-快乐数-盛最多的水

编写代码。

Themberfue的博客 1035

【ComfyUI专栏】安装Triton组件

Triton是一款支持大模型推理的深度学习加速组件,最初仅支持Linux平台,现已通过开源社区适配Windows系统。针对SageAttention的安装,建议使用3.2.0Post10版本(该版本提供封装好的安装包,更高版本仅有源码)。用户可通过GitHub获取安装资源,或直接使用pip命令"pip install triton-windows"进行安装。安装时需注意:1)在虚拟环境中操作;2)使用管理员权限。相关资源链接已在文中提供。

技术与管理的平衡木- 1867

LeetCode算法日记 - Day 2: 快乐数、盛水最多容器

本文介绍了两个算法问题的解法:快乐数判断和盛水最多的容器。 快乐数问题:通过快慢指针检测循环,计算数字各位平方和,若最终收敛于1则为快乐数。时间复杂度O(log n),空间复杂度O(1)。 盛水容器问题:使用对撞指针法,每次移动较小高度的指针,维护最大容积。时间复杂度O(n),空间复杂度O(1)。 两个问题都展示了双指针技巧的高效性,分别用于循环检测和最优解搜索。代码实现简洁,时间复杂度优化明显。

Miraitowa_cheems的博客 754

10分钟搞定小红书爆款笔记爬取!Selenium模拟登录+数据解析全流程,新手也能落地

小红书爬虫实战的核心,是**“模拟真人操作+解析结构化数据”**——Selenium解决了动态页面和登录的问题,lxml解决了数据提取的问题,pandas解决了数据存储的问题。新手学爬虫不用一开始就啃复杂的反爬机制,先从这类“可见即可爬”的场景入手,掌握“模拟操作→数据解析→数据保存”的全流程,再逐步叠加异常处理、批量爬取、反爬应对等功能。需要注意的是:爬取数据仅用于个人学习和研究,不得用于商业用途,且需遵守小红书的用户协议,不要过度爬取导致服务器压力。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1730

【35】软考软件设计师——设计模式代码填空(C++版)满分精讲|第5/6题二选一必考

本文是《软件设计师·50讲通关|从零基础到工程师职称》专栏第35篇,聚焦下午选做题**第5/6题C++版设计模式代码填空**,与上一篇Java版形成双子配套,单题分值稳定12~15分。全文超4000字深度拆解C++独有核心考点:虚函数/纯虚函数、构造与析构函数规范、继承权限、模板类编程在设计模式中的应用;精讲单例、工厂、策略、观察者、适配器五大高频模式的C++专属代码写法,标注所有填空核心点位、语法陷阱、内存安全规范

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 546

Java算法OJ(13)双指针

哈喽大家好吖,今天继续加练算法题目,一共六道双指针,希望能对大家有所帮助,废话不多说让我们开始吧。

2301_81073317的博客 2583

Windows 上 openclaw onboard --install-daemon 命令的安装位置和启动配置

摘要:Windows系统中,执行openclaw-cnonboard--install-daemon命令会创建计划任务OpenClawGateway,该任务在用户登录时自动运行位于%USERPROFILE%.openclaw\gateway.cmd的脚本文件来启动服务。管理方法包括通过任务计划程序或命令行(schtasks)查看/启停任务,使用openclaw gateway命令操作服务,或通过删除计划任务和脚本文件完全卸载服务。该机制确保OpenClawGateway服务随系统登录自动启动。(149字)

大坡3D软件开发 1376

双指针算法(超详细带8道例题及算法解析) —— 包含力扣题目有283移动零、1089复写零、202快乐数、11盛水最多的容器、611有效三角形的个数、179双数之和、15三数之和、18四数之和

双指针是一种思想,而不是说真的就是定义了两个指针,它和语言没有关系,比如C++,Java,Python等都可以使用双指针算法解题,而且是一种非常常见的算法 常见的双指针有两种形式,一种是左右指针,一种是快慢指针 左右指针 一般用于顺序结构中,也称对撞指针 左右指针从两端向中间移动。一个指针从最左端开始,另一个从最右端开始,然后逐渐往中间逼近 左右指针的终止条件一般是两个指针相遇或者错开(也可能在循环内部找到结果直接跳出循环),也就是: left == right (两个指针指向同一个位置)

dream_ready的博客 989

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

双指针算法

该算法涉及到使用俩个指针来来遍历数组,通过俩个指针的协调工作,能大大的提高代码效率,有效的减少时间复杂度,提高代码性能。双指针算法包括快慢指针,前后指针,或者可以搭配单调性来很好的解决问题。本文将利用Java语言来实现双指针的常见题型。

2302_80521088的博客 991

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

双指针(JAVA语言)

双指针(JAVA语言)

weixin_72953218的博客 525

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

力扣刷题 day2

双指针运用

mu_tong_的博客 609

【算法】双指针(上)

本文讲解了双指针的常见用法,以及一些经典题目

L2770789195的博客 794

双指针算法——java实现

此处仍然可以利用双指针算法,可让cur指针从0位置遍历数组,dest指针从-1位置开始,cur指针指向每遇到一个0,dest+=2,每遇到一个非0,dest+=1;每次移动dest后判断dest是否到达数组最后,如果没有则cur++;否则结束,此时,cur所指向的元素应为最后一个被复写的元素。

2201_75456895的博客 1467

Java优选算法——双指针

本文介绍了双指针算法的四种常见类型及其应用场景:1. 就地双指针(原地操作数组)2. 扫描双指针(数组划分)3. 对撞双指针(左右指针)4. 快慢双指针(龟兔赛跑算法)。通过8道LeetCode题目展示了双指针的具体应用,包括移动零、复写零、快乐数判断、盛水容器、三角形计数、两数/三数/四数之和等问题。每种题型都给出了解题思路和Java代码实现,重点讲解了如何利用双指针特性优化算法效率,并处理边界条件和重复元素问题。这些例题展示了双指针在数组、链表等问题中的高效性和实用性。

2301_79204376的博客 1312

双指针算法:高效解题技巧全解析

cur遇到0元素cur++cur遇到非0元素{dest++,交换,cur++}

2501_92331472的博客 779

算法第一弹-----双指针

双指针通常是指在解决问题时,同时使用两个指针(变量,常用来指向数组、链表等数据结构中的元素位置),通过对这两个指针的移动和操作来高效地处理数据、查找元素、遍历结构等,从而达到降低时间复杂度、优化算法的目的。两个指针起始位置可能相同或者不同,但它们朝着同一个方向移动,比如都从数组头部向尾部移动,常用于处理需要连续遍历部分区间、查找满足特定条件的子区间等问题。常使用快慢指针。

2301_80251684的博客 1998

【算法系列篇】双指针

双指针系列算法,移动零、复写零、快乐数、盛最多水的容器、有效三角形的个数、和为S的两个数字、三数之和、四数之和

不能再留遗憾了的博客 2584

双指针算法:从原理到实战,搞定数组_字符串高频题

本文系统介绍了双指针算法的核心原理和三大类型:对撞指针、快慢指针和数组划分指针。通过LeetCode经典例题(移动零、盛水容器、快乐数、三数之和)详细解析了双指针的应用场景和实现技巧,展示了如何将暴力解法从O(n²)优化至O(n)。文章强调双指针的关键在于指针初始位置、移动规则和终止条件的合理设定,并提供了Java代码实现和性能分析。该算法特别适合处理数组、字符串等线性数据结构的查找、去重和分类问题。

phltxy的博客 408

双指针算法:解锁高效编程的钥匙

做题策略:1.定义两个指针(其实本质是两个索引),cur指针(初始位置为0)和dest指针(初始位置为-1)2.cur从后往前遍历数组3.cur遍历完整个数组即完成。视频展示如下:(1)283移动零算法小结:根据双指针移动的方法,可以将数组进行块划分,可以分成三个区间。

LHY537200的博客 936

双指针算法详解:从入门到精通(Java版)

双指针是一种常用的算法技巧,通过使用两个指针在数组或链表等数据结构上进行移动,来解决特定问题。题目指针类型关键技巧移动零快慢指针数组分块,维护非零区间复写零前后指针从后向前避免覆盖快乐数快慢指针检测循环盛水容器对撞指针移动较短边界三角形个数对撞指针排序后固定最长边两数之和对撞指针利用有序性三数之和对撞指针固定一个数+去重四数之和对撞指针固定两个数+去重双指针的核心思想。

2401_87122037的博客 693
上一篇: Spring Boot 快速上手:从 Maven 到第一个 Controller
下一篇: LeetCode刷题双指针(有效三角形的个数+三数之和)Java
评论 8
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值