双指针(JAVA语言)

news2024/9/21 4:28:11

 

目录

 

力扣283.移动零

力扣1089复写零(难度较大,要重点理解,可以记不住咋写,但要记住想法)

力扣202题快乐数

力扣11题.盛最多水的容器(好写代码,方法不好想)


力扣283.移动零

 public static void moveZeroes(int[] nums) {
        int cur=0;
        int dest=-1;
        while(cur<nums.length&&dest<cur){
            if(nums[cur]!=0){
                dest++;
                int tmp=nums[cur];
                nums[cur]=nums[dest];
                nums[dest]=tmp;

            }
            cur++;
        }
   }

力扣1089复写零(难度较大,要重点理解,可以记不住咋写,但要记住想法)

数组中这种移动元素都是双指针

先根据异地操作,然后优化成双指针下的 就地操作

异地操作

就地操作:(这个问题从左向右是肯定不行的,因为会覆盖原来的数字)

cur指最后一个复写的值

dest在最后一个位置(此时使用下面这个方法,可以正好让两个都在他们自己的位置上)

面对特例(此处将n-1位置的值设置为0。)

class Solution {
    public static void duplicateZeros(int[] arr) {
        int dest=0;
        int cur=0;
        while(cur<arr.length){
            if(arr[cur]==0){
                dest++;
            }
            if(dest>=arr.length-1){
                break;
            }
            cur++;
            dest++;
        }
        if(dest==arr.length){
            arr[arr.length-1]=0;
            cur--;
            dest-=2;
        }
        while(dest>0){
            if(arr[cur]!=0){
                arr[dest]=arr[cur];
                dest--;
            }
            if(arr[cur]==0){
                arr[dest--]=0;
                if(dest==0){
                    break;
                }
                arr[dest--]=0;
            }
            cur--;

        }
    }

}

力扣202题快乐数

换句话说,我们需要找出循环的点。

class Solution {
    //返回n这个数每一位上的平方和
    public int bitSum(int n){
        int sum=0;
     while(n!=0){
         int t=n%10;
         sum+=t*t;
         n=n/10;
     }
     return sum;
    }
//谈谈写代码时候的困境,不知道怎么来写,才让指针走一步,没想到可以额外定义一个函数,然后将n这个值传给这个函数,就相当于指针动了一步
    public boolean isHappy(int n) {
        int fast=bitSum(n);
        int slow=n;
     while(slow!=fast){              //找相遇点,因为有环,所以一定会相遇
        slow=bitSum(slow);
        fast=bitSum(bitSum(fast));
      }
      return slow==1;
    }
}

力扣11题.盛最多水的容器(好写代码,方法不好想)

法1.暴力枚举,固定左边,计算所有的右边,然后枚举所有的数字,(两层循环,超时)

方法2:双指针

假如他的左边的数字小,那么就移动左边,右边的数字小就移动右边,是否移动,是通过比较双方数字的大小,来去做指针的移动的

class Solution {
    public int maxArea(int[] height) {
     int cur=0;
     int end=height.length-1;
     int ret=0;
     int i=0;
     while(cur<end){
        int v=Math.min(height[end],height[cur])*(end-cur);
        ret=Math.max(ret,v);
        if(height[cur]<height[end]){
            cur++;
        }else{
            end--;
        }
       
     }
     return ret;
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1398719.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第一部分 概述

目录 一、计算机网络在信息时代的作用 大众熟悉的三大类网络有 Internet 互连网与互联网的区别 可以从两种不同的方面来认识互联网&#xff1a; 互联网在生活中的地位 互联网 互联网负面影响 二、互联网的概述 网络的网络 基本概念 互连网基础结构发展的三个阶段 万维网www(…

未来 AI 可能给哪些产业带来哪些进步与帮助?

AI时代如何要让公司在创新领域领先吗&#xff1f;拥抱这5种创新技能&#xff0c;可以帮助你的公司应对不断变化。包括人工智能、云平台应用、数据分析、 网络安全和体验设计。这些技能可以帮助你提高业务效率、保护公司知识资产、明智决策、满足客户需求并提高销售额。 现在就加…

使用.NET API 中的 EventCounters进行指标监控

写在前面 为了实现轻量级、跨平台、准确实时的性能指标收集&#xff0c;从 .NET Core 3.0 版本开始引入 EventCounters API。除了 .NET 运行时提供的 EventCounters 外&#xff0c;还可以实现自定义的 EventCounters。 以便跟踪各种指标&#xff0c;EventCounters 作为 EventS…

比亚迪50亿重拳出击,建全球首个全地形赛车场,到底闹哪样?

比亚迪这是在悄无声息中准备的一击重拳吗&#xff1f;新建赛车场背后&#xff0c;到底藏着什么不为人知的战略目的&#xff1f;它是否再次玩转行业规则&#xff0c;一举带动整车文化的更深度发展&#xff1f;作为一直以来重视技术和长远规划的比亚迪来说&#xff0c;这里面肯定…

【C语言】- 设置控制台标题、编码、文字颜色、大小和字体

【C语言】- 设置控制台标题、编码、文字颜色、大小和字体 文章目录 【C语言】- 设置控制台标题、编码、文字颜色、大小和字体1 - 设置控制台标题2 - 设置控制台编码3 - 设置控制台字体和大小参考链接 1 - 设置控制台标题 因为要用到 Windows API&#xff0c;所以需要包含头文件…

【谭浩强C程序设计精讲 chap4】选择结构程序设计

文章目录 第4章 选择结构程序设计一、用 if 语句实现选择结构二、用 switch 语句实现多分支选择结构三、条件运算符和条件表达式 第4章 选择结构程序设计 一、用 if 语句实现选择结构 一般形式&#xff1a; if (表达式)  语句1 [ else  语句2 ] 其他形式&#xff0c;常用的…

Linux 批量添加 known_hosts

前言 我们在做完linux ssh 免密登录后&#xff0c;通常会执行一些自动化任务&#xff08;比如启动Spark集群&#xff09;&#xff0c;也就是需要ssh到每台节点执行相同命令。但是有一个问题就是如果 known_hosts 文件中不存在这个ip的话&#xff0c;在第一次连接时会弹出确认公…

Unity常用的优化技巧集锦

Unity性能优化是面试的时候经常被问道的一些内容&#xff0c;今天给大家分享一些常用的Unity的优化技巧和思路&#xff0c;方便大家遇到问题时候参考与学习。 对啦&#xff01;这里有个游戏开发交流小组里面聚集了一帮热爱学习游戏的零基础小白&#xff0c;也有一些正在从事游…

傲空间私有部署Windows指南

推荐阅读 智能化校园&#xff1a;深入探讨云端管理系统设计与实现&#xff08;一&#xff09; 智能化校园&#xff1a;深入探讨云端管理系统设计与实现&#xff08;二&#xff09; 安装 docker 请下载对应的 Docker&#xff0c;安装完成后启动。 Docker Desktop for Windows…

【Redis配置】Linux下的Redis安装配置

压缩包方式的Redis下载与安装 进入官网 Redis官网&#xff1a;https://redis.io/download/ 往下翻可以找到其他版本的Redis&#xff0c;或者访问https://download.redis.io/releases/查找自己所需Redis版本。 下载自己所需版本 此处我选择下载的是6.2.14版本 上传到Linux…

Crow:实现点击下载功能

Crow:设置网站的index.html-CSDN博客 讲述了如何完成一个最简单的网页的路由 很多网页提供了下载功能,怎么实现呢,其实也很简单。 假设网页的目录结构如图 $ tree static static ├── img │ └── goodday.jpg └── index.html //index.html <html> <body&…

VMnet1、VMnet8到底是什么?

VMnet1、VMnet8到底是什么&#xff1f; 当我们安装VMware Workstation后&#xff0c;在宿主机(物理电脑)上会多出两个网卡VMNet1、VMNet8。 VMnet1和VMnet8是两个虚拟网卡&#xff0c;主要作用是让虚拟机可以通过你的宿主机的网线上网。 VMnet1是为host-only方式服务的&#x…

CSS实现平行四边形

1、为什么实现平行四边形 在日常开发过程中&#xff0c;有些时候我们可以会遇到一种情况&#xff0c;如可视化大屏中要求我们横线实现对应的进度条&#xff0c;但进度条的内容是由无数个平行四边形组装类似于进度条的形式&#xff0c;那么我们就需要使用CSS来进行对应的实现。 …

后台管理系统: 数据可视化基础

数据可视化简单理解&#xff0c;就是将数据转换成易于人员辨识和理解的视觉表现形式&#xff0c;如各种 2D 图表、3D 图表、地图、矢量图等等。 例如Excel等等 canvas <canvas> 标签只是图形容器&#xff0c;相当于一个画布&#xff0c;canvas 元素本身是没有绘图能力…

内存那点事:让我们一点点的搞懂它

内存是计算机系统中至关重要的组成部分&#xff0c;它不仅储存了运行中的程序和数据&#xff0c;还直接关系到系统的性能和稳定性。让我们一起深入探讨Linux系统下内存管理的核心原理&#xff0c;揭开它的神秘面纱。 基础概念 物理地址 概念&#xff1a;物理地址是指计算机内…

一个关于自动化工具的操作手册

整体 整个软件由首页、设计页构成 首页 按钮功能 清除缓存&#xff1a;主要为了避免线程占用的问题&#xff0c;端口占用无法重新执行。所以操作执行任务、修改任务、新建任务没有响应时&#xff0c;可以操作该事件新建任务&#xff1a;顾名思义就是创建一个网页自动化任务执…

世界上真的存在比苹果品质还好的笔记本电脑吗?

苹果笔记本电脑的品质一直是业界标杆&#xff0c;但它真的是最好的吗&#xff1f;答案是肯定的&#xff0c;但也要看你怎么定义“好”。为什么mac那么贵&#xff0c;还有很多人买&#xff1f;探索高性能的Mac系列&#xff0c;包括 MacBook Pro、Mac Studio和Mac Pro&#xff0c…

后台管理系统: spu管理模块

spu管理模块业务 spu 可以理解为类 例如 people类【spu】 sku可以理解为实例 例如&#xff1a;小明 18 男 spu跟sku可以理解为类跟多个实例的关系 spu管理模块静态 <template><div><el-card style"margin: 20px 0px"><CategorySelect get…

视频剪辑技巧:一键批量制作画中画视频的方法,高效提升剪辑任务

在数字媒体时代&#xff0c;视频剪辑已成为一项重要的技能。无论是专业的影视制作&#xff0c;还是日常的社交媒体分享&#xff0c;掌握视频剪辑技巧都能为内容增色不少。下面来看云炫AI智剪如何高效的剪辑视频技巧&#xff1a;一键批量制作画中画视频的方法&#xff0c;帮助您…

【日常聊聊】边缘计算的挑战和机遇

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a; 日常聊聊 ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 边缘计算的挑战和机遇 一&#xff1a;数据安全与隐私保护 二&#xff1a;网络稳定性与可靠性 三&#xff1a;实时性与性能优…