首页 > 其他分享 >3.21

3.21

时间:2024-03-21 21:11:17浏览次数:24  
标签:nums int System 3.21 result 数组 new

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

代码

package org.example;

import java.util.Scanner;

public class Shuzu {
public int[] removeDuplicates(int[] nums) {
int n = nums.length;
if (n == 0) {
return nums;
}

int j = 0;
for (int i = 1; i < n; i++) {
if (nums[i] != nums[j]) {
j++;
nums[j] = nums[i];
}
}

// 创建一个新的数组来存储非重复元素
int[] result = new int[j + 1];
System.arraycopy(nums, 0, result, 0, j + 1);
return result;
}

public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);

// 询问用户数组的长度
System.out.print("Enter the length of the array: ");
int length = scanner.nextInt();

// 创建一个指定长度的数组
int[] nums = new int[length];

// 读取用户输入的数组元素
for (int i = 0; i < length; i++) {
System.out.print("Enter element " + (i + 1) + ": ");
nums[i] = scanner.nextInt();
}

// 关闭Scanner对象
scanner.close();

// 创建Shuzu的实例
Shuzu shuzu = new Shuzu();

// 调用removeDuplicates方法并打印结果
int[] uniqueNums = shuzu.removeDuplicates(nums);
System.out.print("The unique elements of the array are: ");
for (int num : uniqueNums) {
System.out.print(num + " ");
}
}
}


主要流程
以数组[1 1 2 2 3 4 4 5]为例
1.i=0 j=0 时nums[i]=nums[j]=1,跳过,i+1,此时i=1 j=0;
2.nums[i]=nums[j],继续跳过i+1,此时i=2 j=0;
3.此时nums[i]=2,nums[j]=1,两者不相等,令nums[++j]=nums[i],此时j=1,i=3;数组变为[1 2 2 2 3 4 4 5]继续循环
4.nums[i]=2,nums[j]=2,相等,重复上面过程,最后数组变为[1 2 3 4 5 4 4 5]
5.
int[] result = new int[j + 1];
System.arraycopy(nums, 0, result, 0, j + 1);
return result;
用这段代码取数组前j+1位,得到结果

标签:nums,int,System,3.21,result,数组,new
From: https://www.cnblogs.com/wangzelin/p/18088250

相关文章

  • 3.21
     第十二天所花时间3h代码量150行博客量1篇所学的知识完成学习记录的制作     <?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.......
  • 专题2024.03.21
    2024.03.21专题T1Bombs答案显然具有单调性,多删一定比少删更优,这是明显的一个数\(a_i=x\)不被删掉的充要条件为:\[\sum\limits_{j=1}^{i-1}[a_j<x]\leqk\]其中\(k\)为\(i\)之前的炸弹数量由单调性,考虑每次加一个炸弹后怎么快速的检查一个数合不合法,可以用线段树维......
  • MicroSIP-3.21.3+pjproject-2.13.1+ opus-1.3.1+VS2019
    本文记录了我通过VS2019编译MicroSIP-3.21.3开源项目的过程。Microsip:MicroSIPsourcecodepjproject:DownloadPJSIP-OpenSourceSIP,Media,andNATTraversallibraryopus:Downloads–OpusCodec(opus-codec.org)下载并解压后如图: 用vs2019将microsip的平......
  • C++11——3.21-3.22 move,forward
    ★★★原文链接★★★:https://subingwen.cn/cpp/move-forward/3.21move资源的转移3.22forward完美转发3.21move资源的转移move方法可以将左值转换为右值使用这个函数并不能移动任何东西,它将一个对象的所有权从这个对象转移到另一个对象,只是转移,没有内存拷贝。move语......
  • api分享103.216.155.x
    在日常生活中,我们有很多类似api场景,比如电脑需要调用手机里面的信息,这个时候会拿一个数据线将电脑和手机连接起来,电脑和手机连接数据线的接口就是我们所说的api接口。常见web接口是http/https协议的接口,API是处理系统之间数据传输的媒介。在API调用过程中,客户端会通过API发送请求,A......
  • 虚拟化103.216.154.x
    虚拟化是一种资源管理,将计算机的各种实体资源,如果服务器、网络、内存、存储等,予以抽象、转换后呈现出来,打破实体结构间的补课切割障碍,使用户可以比原来组态更好的方式应用这些资源,这些资源的新虚拟部分是不受现有资源架设方式,地域或者物理组态所限制。一般所指的虚拟化资源包括计算......
  • 江西服务器出租,游戏服务器配置该如何选择?103.219.28.X
    江西服务器的稳定性和安全性虽说没有宁波和杭州的那么好,但是机器的应用领域也是不同的,目前江西有3大数据中心,江西南昌电信机房、新余数据中心和吉安电信机房。江西南昌机房经过数年的发展与扩容,截止2011年12月出口带宽总量已达200G,托管设备3000多台。新余数据中心有骨干光缆直连Chi......
  • Windows服务器定时重启设置教程 103.216.155.x
    Windows系统的任务计划程序,可以添加计划任务,设置任务开始时间及执行的间隔,实现应用的自动执行。例如:实现定时重启、关机等常见的功能。如何使用参考以下步骤1、新建一个文本文件,将文件后缀改为bat,然后添加如下代码shutdown-r-f-t 0该命令的作用是立即强制重启机器。在文件中单......
  • 搭建发卡平台需要什么配置的服务器?103.219.30.x
    能看到这篇文章的,多数都是想要搭建自己的发卡平台,搭建发卡平台需要有源码、备案域名和服务器,今天我就给你们分享一下搭建发卡平台用什么服务器配置比较好?发卡网对服务器的稳定性和安全性的要求相对一般,如果是按照云服务器的配置来选择,建议宜高不宜低,配置越高,稳定性和安全性就越好。......
  • IP段是什么意思?杭州高防服务器103.219.30.X
    IP段就是网段,一般指一个计算机网络中使用同一物理层设备(传输介质,中继器,集线器等)能够直接通讯的那一部分。例如,从103.219.30.1到103.219.30.255这之间就是一个网段。在同一网段,要求网络标识相同。网络标识就是用IP的二进制与子网掩码的二进制数据作'与'运算(可用WINDOWS计算器算二进......