力扣刷题 day1

移动零

283. 移动零 - 力扣(LeetCode)

在这里插入图片描述

看到这道题,是否第一个想法就是双指针,下面我们就来使用双指针来完成这道题.

图:
在这里插入图片描述

代码:

java:

 // 移动 0 双指针
    public void moveZeroes(int[] nums) {
        for (int current = 0, dest = -1; current < nums.length; current++) {
            if (nums[current] != 0) {
                // 此时不等于 0 进行交换
                dest++;
                swapNumber(nums, current, dest);
            }
        }
    }

    public void swapNumber(int[] numbers, int left, int right) {
        int temp = numbers[left];
        numbers[left] = numbers[right];
        numbers[right] = temp;
    }

python:

class Solution(object):
    def moveZeroes(self, nums):
        current = 0
        dest = -1
        while len(nums):
            if nums[current] != 0:
                dest = dest + 1
                self.sawpNumbs(nums, current, dest)
            current = current + 1
            if current >= len(nums):
                break

    def sawpNumbs(self, nums, left, right):
        temp = nums[left]
        nums[left] = nums[right]
        nums[right] = temp

这里双指针,划分数组如果学过快排,应该会有映像.

复写零

在这里插入图片描述

仔细阅读题目,应该会有一个想法就是双指针, 一个进行遍历,一个进行复写,下面来看看思路.

图一:

在这里插入图片描述

图二:

在这里插入图片描述

java

  public static void duplicateZeros(int[] arr) {
            int current = 0, dest = -1;
            while (current < arr.length) {
                if (arr[current] == 0) {
                    dest += 2;
                } else {
                    dest++;
                }
                if (dest >= arr.length - 1) {
                    // 此时说明 current 到达了最后一个复写元素
                    break;
                }
                current++;
            }
            if (dest == arr.length) {
                // 处理一下边界情况
                arr[arr.length - 1] = 0;
                current--;
                dest = dest - 2;
            }

            // 进行赋值操作
            while (current >= 0) {
                if (arr[current] != 0) {
                    arr[dest--] = arr[current];
                } else {
                    arr[dest--] = 0;
                    arr[dest--] = 0;
                }
                current--;
            }
    }

python

class Solution(object):
    def duplicateZeros(self, arr):
        current = 0
        dest = -1
        while current < len(arr):
            if arr[current] == 0:
                dest += 2
            else:
                dest += 1
            if dest >= len(arr) - 1:
                break
            current += 1
        # 判断边界
        if dest == len(arr):
            arr[len(arr) - 1] = 0
            dest = dest - 2
            current = current - 1
        while current >= 0:
            if arr[current] != 0:
                arr[dest] = arr[current]
                dest = dest - 1
            else:
                arr[dest] = 0
                arr[dest - 1] = 0
                dest = dest - 2
            current = current - 1

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Android 系统省电软件分析

1、硬件耗电 主要有&#xff1a; 1、屏幕 2、CPU 3、WLAN 4、感应器 5、GPS(目前我们没有) 电量其实是目前手持设备最宝贵的资源之一&#xff0c;大多数设备都需要不断的充电来维持继续使用。不幸的是&#xff0c;对于开发者来说&#xff0c;电量优化是他们最后才会考虑的的事情…

全景3d云展览编辑平台让您的展示更加高效、专业、有趣

在当今数字化浪潮中&#xff0c;线上三维云展编辑平台以其独特的优势&#xff0c;成为企业展示自我、吸引客户的新利器。我们的平台专为不同行业定制&#xff0c;提供海量展厅模板&#xff0c;让您的云展厅快速成型&#xff0c;既提升了建展效率&#xff0c;又大幅节约了成本。…

宋仕强论道之新质生产力

宋仕强论道之新质生产力&#xff0c;宋仕强说当前5G通信、人工智能、万物互联、工业互联网、数字经济、新能源技术和产业等领域正蓬勃发展&#xff0c;成为未来经济增长的重要推动力&#xff0c;也是目前提倡的新质生产力的重要组成部分。而这些领域的发展都离不开数据的采集、…

如何在CentOS7本地搭建ONLYOFFICE办公套件结合内网穿透实现公网访问

文章目录 1. 安装Docker2. 本地安装部署ONLYOFFICE3. 安装cpolar内网穿透4. 固定OnlyOffice公网地址 本篇文章讲解如何使用Docker在本地服务器上安装ONLYOFFICE&#xff0c;并结合cpolar内网穿透实现公网访问。 Community Edition允许您在本地服务器上安装ONLYOFFICE文档&…

CoSeg: Cognitively Inspired Unsupervised Generic Event Segmentation

名词解释 1.特征重建 特征重建是一种机器学习中常用的技术&#xff0c;通常用于自监督学习或无监督学习任务。在特征重建中&#xff0c;模型被要求将输入数据经过编码器&#xff08;encoder&#xff09;转换成某种表示&#xff0c;然后再经过解码器&#xff08;decoder&#x…

栈结构(详解)

1.栈的概念 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶&#xff0c;另一端称为栈底。栈中的数据元素遵守后进先出LIFO&#xff08;Last In First Out&#xff09;的原则。 压栈&am…

UE4 自定义shader获取灯光位置

UE4.26:How to get the direction of specific directional lights in custom node material? - #4 by Arkiras - Rendering - Epic Developer Community Forums 获取灯光位置的shader&#xff0c;应该是这个了atmosphere sun light vector 和vertexNormalWS的叉乘add一个固有…

【数据库系统工程师】2024年5月考前最后冲刺指南

一、备考关键&#xff1a; 高效率的备考方式&#xff1a;多轮迭代学习 △ 基础阶段 △ 大面积撒网(60%) 略读&#xff0d;> 做题 &#xff0d;> 回顾 &#xff0d;> 精读 △ 积累阶段 △ 有针对性的突破(30%) 完成所有章节之后&#xff0c;进行真题测试&#x…

【C++】命名空间、缺省参数、函数重载、引用

文章目录 1.认识命名空间2.命名空间的使用3.C的输入和输出4.缺省参数4.1缺省参数的概念4.2缺省参数的分类 5.函数重载6.引用6.1引用的概念6.2引用的特性6.3常引用(重点题目)6.4引用和指针的区别 1.认识命名空间 C总计63个关键字&#xff0c;C语言32个关键字 下面让我们学习一…

难以重现的 Bug如何处理

对很多测试人员&#xff08;尤其是对新手来说&#xff09;在工作过程中最不愿遇到的一件事情就是&#xff1a;在测试过 程中发现了一个问题&#xff0c;觉得是 bug&#xff0c;再试的时候又正常了。 碰到这样的事情&#xff0c;职业素养和测试人员长期养成的死磕的习性会让她…

常用的内外网文件传输方式及优缺点

在现代企业环境中&#xff0c;内外网文件传输是一项至关重要的任务。这涉及到数据的安全性、传输效率以及操作的便捷性等多个方面。 每种方式都有其独特的优缺点&#xff0c;下面我们将逐一进行分析。 1、FileLink 优势&#xff1a;FileLink是一款专用于企业内外网隔离后的文…

Spring Boot | Spring Boot 整合 “异步任务“ 的实现

目录&#xff1a; 一、异步任务1.1 "无返回值" 异步任务调用 :① 创建项目② 编写 "异步调用方法" ( 使用 Async 注解 )③ "主程序启动类"中 开启基于 "注解" 的异步任务支持 ( 使用EnableAsync注解 )④ 编写 "控制层" 相关…

Linux本地部署Nightingale夜莺监控并实现远程访问提高运维效率

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

轴承制造企业“数智化”突破口

轴承是当代机械设备中一种重要零部件。它的主要功能是支撑机械旋转体&#xff0c;降低其运动过程中的摩擦系数&#xff0c;并保证其回转精度。轴承是工业核心基础零部件&#xff0c;对国民经济发展和国防建设起着重要的支撑作用。 轴承企业普遍采用以销定产的经营模式&#xf…

Android Studio开发之路(九)创建android library以及生成aar文件

一、需求 我做了一个camerax相机opencv图像处理图片上传服务器功能的android应用&#xff0c;应客户需求要将其改成一个SDK&#xff0c;由客户加到他们自己的app里边。 于是&#xff0c;我需要制作一个library&#xff0c;打包成aar文件&#xff08;jar:只有代码&#xff0c;没…

ATFX:美国通胀率平台期,或助力黄金延续涨势

ATFX金属&#xff1a;5月9日19:00至5月10日19:00&#xff0c;COMEX黄金的小时级别出现一波持续24小时的上涨走势&#xff0c;最高触及2385.3美元&#xff0c;累计涨幅2.78%&#xff0c;成为上周最佳的短线交易时机。R阻力线形成后&#xff0c;COMEX黄金进入下降通道&#xff0c…

2024年趋势:6款AI问答机器人工具推荐

众所周知&#xff0c;随着科技的发展&#xff0c;人工智能技术充斥着我们的生活。其中&#xff0c;AI问答机器人已经成为了我们生活和工作中不可或缺的一部分。它们不仅能够帮助我们快速获取信息&#xff0c;还能提供个性化的服务和建议&#xff0c;帮助我们快速解决问题。本文…

LayaAir引擎全面支持淘宝小游戏、小程序、小部件的发布

在最新的3.1版本和2.13版本中&#xff0c;LayaAir引擎已经全面支持了淘宝小游戏、小程序和小部件的开发和发布。这一重大更新&#xff0c;标志着LayaAir引擎与电商巨头阿里巴巴旗下的淘宝平台形成生态合作&#xff0c;在为广大开发者提供更加强大、高效的跨平台开发工具和解决方…

Java面试八股之什么是Java反射

什么是Java反射 基本概念 反射是Java语言的一个重要特性&#xff0c;它允许我们在运行时分析类、接口、字段、方法等组件的信息&#xff0c;并能够动态地操作这些组件&#xff0c;包括创建对象、调用方法、访问和修改字段值等。简单来说&#xff0c;反射提供了在程序运行时对…

#APPINVENTOR扩展插件之MQTT

1.APPINVENTOR网址&#xff1a; http://code.appinventor.mit.edu/http://code.appinventor.mit.edu/ 对应AI伴侣下载地址&#xff1a;http://code.appinventor.mit.edu/companions/MITAI2Companion.apkhttp://code.appinventor.mit.edu/companions/MITAI2Companion.apk 2.MQ…