leetCode - - - 数组

news2024/12/25 23:06:29

1.移动0(leetcode283)

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

请注意 ,必须在不复制数组的情况下原地对数组进行操作。

class Solution {
    public void moveZeroes(int[] nums) {
        int slow=0;
        for(int fast=0;fast<nums.length;fast++){
            if(nums[fast]!=0){
                nums[slow]=nums[fast];
                slow++;
            }
        }
        for(int i=slow;i<nums.length;i++){
            nums[i]=0;
        }
    }
}

2.颜色分类(leetcode75)

给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums ,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。

我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。

必须在不使用库内置的 sort 函数的情况下解决这个问题。

class Solution {
    public void sortColors(int[] nums) {
        int left=0;
        int right=nums.length-1;
        int index=0;
        while(index<=right){
           int cur=nums[index];
            if(cur==0){
                swap(nums,index,left);

                //index不能再left的左边
                index++;

                left++;
            }
            if(cur==1){
                index++;
            }
            if(cur==2){
                swap(nums,index,right);
                right--;
                //这里没有index++;因为还不知道num[index]是多少,可能是0,还要往前交换
            }
        }
    }

    //交换
    public void swap(int[] nums,int i,int j){
        int tmp=nums[i];
        nums[i]=nums[j];
        nums[j]=tmp;
    }
 }

3.删除有序数组中的重复项目(leetcode26)

给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。

考虑 nums 的唯一元素的数量为 k ,你需要做以下事情确保你的题解可以被通过:

  • 更改数组 nums ,使 nums 的前 k 个元素包含唯一元素,并按照它们最初在 nums 中出现的顺序排列。nums 的其余元素与 nums 的大小不重要。
  • 返回 k 。

判题标准:

系统会用下面的代码来测试你的题解:

int[] nums = [...]; // 输入数组
int[] expectedNums = [...]; // 长度正确的期望答案

int k = removeDuplicates(nums); // 调用

assert k == expectedNums.length;
for (int i = 0; i < k; i++) {
    assert nums[i] == expectedNums[i];
}

如果所有断言都通过,那么您的题解将被 通过

class Solution {
    public int removeDuplicates(int[] nums) {
        //p用来放即将要存储的位置
        int p=0;
        //对数组元素进行遍历
        for(int i=0;i<nums.length;i++){
            if(i==0||nums[i]!=nums[i-1]){
                nums[p]=nums[i];
                p++;
            }
        }
        return p;
    }
}

4.合并两个有序数组(leetcode88)

给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。

请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。

注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。

class Solution {
    public void merge(int[] nums1, int m, int[] nums2, int n) {
        //设置三个索引,原来num1的末端,原来num2的末端,合并后num1的末端
        int i=m-1;
        int j=n-1;
        int cur=nums1.length-1;

        //num2中元素要全部合并到num1中
        while(j>=0 ){
            if(i>=0 &&nums1[i]>nums2[j]){
                nums1[cur]=nums1[i];
                cur--;
                i--;
            }else{
                nums1[cur]=nums2[j];
                cur--;
                j--;
            }
        }
    }
}

这道题解的很波折 ~~~~

终于明白了 o(╥﹏╥)o 

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

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

相关文章

邮件API的API文档和技术支持资源如何获取?

邮件API如何集成到现有系统中&#xff1f;如何选邮件API服务&#xff1f; 对于开发者来说&#xff0c;理解和获取邮件API的API文档和技术支持资源至关重要。AokSend将详细介绍如何高效获取这些资源&#xff0c;帮助开发者顺利集成邮件API&#xff0c;并在项目中发挥其最大功效…

音频剪辑软件哪个好用?轻松处理音频的6款软件

在日常生活中&#xff0c;我们常常需要对音频进行编辑&#xff0c;无论是为了制作个性化的音乐铃声&#xff0c;还是剪辑重要的录音&#xff0c;或是创作音频片段。 面对这些音频剪辑的挑战&#xff0c;一款好用的在线音频剪辑免费版软件就显得尤为重要。 下面为大家推荐6个好…

打音游(补全程序)

首先最外层循环枚举的是总共的得分次数&#xff0c;包括x1,x,x/2&#xff0c;那么n-i就是没得分的情况。 里层循环j代表得x/2的情况&#xff0c;要么没有&#xff0c;要么最多1次&#xff0c;如果两次会变成x那么之前的循环已经枚举过了。 lower代表的是得x1分的下限那就是总…

六通道CAN(FD) 集线器

一 、功能概述 1.1 设备简介 CANFD 完全向下兼容 CAN&#xff0c; 以下统称 CAN(FD) 。本产品是CAN(FD)集线器&#xff0c; 支持名义 波特率 5k-1M&#xff0c; 数据波特率5k-5M&#xff0c; 开启位速率转换最低数据波特率100k。 支持每路单独设置接收帧类型&#xff08;软…

Apache Camel Karavan -理解一

Apache Camel 开始接触是在ETL数据&#xff0c;数据处理成为了现代企业必须面对的一个挑战。在数据处理中&#xff0c;etl&#xff08;提取-转换-加载&#xff09;的概念被广泛采用&#xff0c;其中提取指从源数据中收集数据&#xff0c;转换指将数据与所需数据配对&#xff0c…

uniapp创建一个新项目并导入uview-plus框架

近年来&#xff0c;随着技术的发展&#xff0c;人们越来越意识到跨平台和统一的重要性。对于同一款应用来说&#xff0c;一般都会有移动端、PC端、甚至小程序端。这是由于设备的不同&#xff0c;我们必须要做很多的客户端来满足不同的用户需求。但是由于硬件设施的不同&#xf…

谷粒商城实战笔记-131~132-商城业务-商品上架-构造sku检索属性和库存查询

文章目录 一&#xff0c;131-商城业务-商品上架-构造sku检索属性1&#xff0c;开发目标2&#xff0c;详细设计2.1&#xff0c;根据spu_id获取所有的规格参数2.2&#xff0c;根据上一步中查询结果进一步确认是否可搜索2.3&#xff0c;将可搜索的属性封装到Java模型中 二&#xf…

MySQL命令行工具的配置和使用

一、Windows启动命令行工具 1.打开Windows的开始菜单&#xff0c;找到安装好的MySQL&#xff0c;点击MySQL 8.0 Command Line Client - Unicode&#xff0c;这个带有Unicode的&#xff0c;是支持中文的&#xff0c;允许在命令行中敲中文。 然后从打开的窗口输入安装MySQL时设置…

【探索Linux】P.45(NAT技术 | NAPT技术)

阅读导航 引言一、NAT技术1. NAT技术引入2. NAT技术简介&#xff08;1&#xff09;基本原理&#xff08;2&#xff09;主要类型&#xff08;3&#xff09;技术优点&#xff08;4&#xff09;技术挑战&#xff08;5&#xff09;应用场景 二、NAPT温馨提示 引言 在上一篇文章中&…

NC 没有重复项数字的全排列

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站&#xff0c;这篇文章男女通用&#xff0c;看懂了就去分享给你的码吧。 描述 给出一组数字…

【网络安全入门】学习网络安全必须知道的100 个网络基础知识_网络安全知识入门基础

什么是链接? 链接是指两个设备之间的连接。它包括用于一个设备能够与另一个设备通信的电缆类型和协议。 2 OSI 参考模型的层次是什么? 有 7 个 OSI 层&#xff1a;物理层&#xff0c;数据链路层&#xff0c;网络层&#xff0c;传输层&#xff0c;会话层&#xff0c;表示层…

接口测试之python+rquest+unittest分层自动化框架

接口测试之接口po框架 一、新建一个项目 接口自动化框架设计实战&#xff1a; 第一包&#xff1a;config 案例&#xff1a; #登录接口 dl_url http://cms.duoceshi.cn/cms/manage/loginJump.do dl_d {userAccount: admin, loginPwd: 123456} dl_h "Content-Type:app…

IP地址申请SSL证书的详细流程(ip地址实现https访问)

IP地址SSL证书是一种特殊的SSL/TLS证书&#xff0c;它被设计用于保护直接通过IP地址访问的服务。这种证书可以为IP地址提供HTTPS加密和身份验证。 IP地址申请SSL证书的详细流程如下&#xff1a; IP SSL证书-JoySSLhttps://www.joyssl.com/certificate/select/ip_certificate.…

查看pycharm里面的库的版本

1. 点击右下角 点击 2. 点击设置

金蝶云星空与致远 OA 的集成:实现高效流程审批

在当今数字化转型中&#xff0c;企业对于信息化系统的集成需求日益增长。金蝶云星空作为一款强大的企业资源管理系统&#xff0c;致远 OA 作为优秀的协同办公平台&#xff0c;两者的对接集成能够为企业带来更高效、更流畅的业务流程和审批体验。 一、集成的背景与意义 随着企业…

SpringBoot轻松实现邮件发送-copy即用

&#x1f469;&#x1f3fd;‍&#x1f4bb;个人主页&#xff1a;阿木木AEcru (更多精彩内容可进入主页观看) &#x1f525; 系列专栏&#xff1a;《Docker容器化部署系列》 《Java每日面筋》 &#x1f4b9;每一次技术突破&#xff0c;都是对自我能力的挑战和超越。 目录 前言一…

keeplive配置详解与haproxy配置详解

一、keepalive相关知识 1.1 keepalive介绍 keepalive即LVS集群当中的高可用架构&#xff0c;只是针对调度器的高可用。是高可用的HA架构。 keepalive就是基于VRRP协议来实现LVS高可用的方案。 1、组播地址 224.0.0.18&#xff0c;根据组播地址进行通信&#xff0c;主备之间发…

【学习笔记】A2X通信的协议(一)- 核心内容

3GPP TS 24.577 V18.1.0的技术规范&#xff0c;主要定义了5G系统中A2X通信的协议方面&#xff0c;特别是在PC5接口和Uu接口上的A2X服务。以下是文件的核心内容分析&#xff1a; 文档概述与目的&#xff1a; 技术规范背景&#xff1a;文档是3GPP在5G系统&#xff08;5GS&#x…

WEEK 4 周报

这周专题是图论&#xff1a; 目录 这周专题是图论&#xff1a; 树和图的存储及遍历&#xff1a; 存储&#xff1a; 遍历&#xff1a;(每个点只遍历一次&#xff0c;所以需要卡一个布尔数组标记是否已经被遍历) 1.深度优先遍历&#xff1a; 树的重心&#xff1a; 2.宽度…

Apache POl初学

介绍 入门案例 通过POI写入操作 /*** 使用POI操作Excel文件*/ public class POITest {/*** 通过POI创建Excel文件并写入文件内容**/public static void write() throws Exception{//在内存中创建一个Excel文件XSSFWorkbook excel new XSSFWorkbook();//在Excel中创建一个Shee…