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

一,快乐数

解题思路:

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

代码演示:

java 复制代码
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,找到最大的就好了

代码演示:

java 复制代码
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;
    }
}
相关推荐
yi01110 小时前
LeetCode 219:存在重复元素 II——哈希表记录“最近一次出现的位置”
数据结构·人工智能·笔记·python·算法·leetcode·哈希表
YangYang9YangYan11 小时前
2027 秋招|数据科学与大数据技术面试项目价值回答思路,告别纯代码描述
大数据·面试·职场和发展
灯澜忆梦12 小时前
【面向对象编程C++】| 基础语法
java·c++·算法
小蒋观天下13 小时前
专项方案:大场景港口AI安防、多干扰环境下的算法调优与落地实操
人工智能·深度学习·算法·安全·机器学习·计算机视觉·ai大模型
Evand J13 小时前
【电机滤波例程5】渐消因子自适应扩展卡尔曼滤波(EKF),MATLAB。PMSM负载突变下的状态估计。附下载链接
算法·matlab
H.莓飛13 小时前
【数据结构】二叉树_OJ题
linux·开发语言·数据结构·算法
好想像大佬一样能够ak所有14 小时前
Leetcode35.搜索插入位置
数据结构·算法·leetcode
aqiu11111114 小时前
【C++算法打怪专栏】LeetCode 165. 比较版本号(双指针与字符串流法)
c++·算法·leetcode
黄金龙PLUS14 小时前
如何基于置换算法来设计对称加密算法
算法·网络安全·密码学·哈希算法·同态加密