Java代码基础算法练习-删除有序数组中的重复项-2024.05.07

news2024/10/6 16:30:58

任务描述:

给一个有序数组(共10个元素),请在不新建数组的情况下,删除重复出现的元素,使 每个元素只出现一次,最后请输出删除重复元素后数组的新长度和数组元素。


解决思路:

要删除有序数组中的重复项,且不使用额外数组,可以采用双指针法

  1. 定义两个指针 i 和 j ,初始时都指向数组的第一个元素,即 i = j = 0
  2. 指针j负责遍历数组,而指针i用于记录不重复元素的最新位置
  3. 当 j 遍历过程中遇到与i指向的元素不同的新元素时,将该元素移到 i+1 的位置上,并将i向前移动一位。这样,i 之后的元素始终是唯一的
  4. 遍历结束后,i+1 的位置就是去重后数组的新长度

代码示例:

package May_2024;

import java.util.Scanner;

/**
 * 这个类演示了如何从一个有序数组中移除重复元素。
 * 主函数会提示用户输入10个有序整数,并打印出移除重复元素后的数组长度及元素。
 */
public class m240507_1 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入10个有序的数组元素值(元素取值范围:0~1000):");
        int[] nums = new int[10];
        // 从用户输入读取10个整数
        for (int i = 0; i < 10; i++) {
            nums[i] = scanner.nextInt();
        }

        // 调用方法移除数组中的重复元素
        int newLength = removeDuplicates(nums);
        System.out.println(newLength);
        // 打印移除重复元素后的数组元素
        for (int i = 0; i < newLength; i++) {
            System.out.print(nums[i] + " ");
        }
    }

    /**
     * 从有序数组中移除重复元素。
     *
     * @param nums 有序整型数组
     * @return 移除重复元素后的新数组长度
     */
    public static int removeDuplicates(int[] nums) {
        // 如果数组为空,直接返回0
        if (nums.length == 0) return 0;

        int i = 0;
        // 从第二个元素开始遍历数组
        for (int j = 1; j < nums.length; j++) {
            // 如果遇到不同元素,将其移到i+1的位置,并且i自增
            if (nums[j] != nums[i]) {
                i++;
                nums[i] = nums[j];
            }
        }

        return i + 1; // 返回新数组的长度
    }
}

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

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

相关文章

专题五_位运算(2)

目录 面试题 01.01. 判定字符是否唯一 解析 题解 268. 丢失的数字 解析 题解 371. 两整数之和 解析 题解 面试题 01.01. 判定字符是否唯一 面试题 01.01. 判定字符是否唯一 - 力扣&#xff08;LeetCode&#xff09; 解析 题解 class Solution { public:bool isUnique…

搭建Docker私有镜像仓库

大家好&#xff0c;今天给大家分享一下如何搭建私有镜像仓库&#xff0c;私有镜像仓库可以更好地管理和控制镜像的访问和使用&#xff0c;确保只有授权的人员能够获取和使用特定的镜像&#xff0c;而且方便团队内部共享定制化的镜像&#xff0c;提高开发和部署效率&#xff0c;…

【每天一个linux小知识】如何使用 oh-my-zsh 让使用zsh更高效

往期文章 tailf 和 tail -f nslookup 目录 往期文章对比演示zshoh-my-zsh安装自动提示、补全、语法高亮等插件参考 对比演示 使用 oh-my-zsh 之前&#xff1a; 使用 oh-my-zsh 之后&#xff1a; zsh 要使用oh-my-zsh前提是使用zsh。所以第一步安装zsh 可以看一下你的系统…

使用应变计进行建筑物的健康监测

在建筑健康监测领域&#xff0c;应变计是一种至关重要的传感器&#xff0c;用于评估结构的安全和性能。特别是振弦式应变计&#xff0c;以其高精度和稳定性&#xff0c;成为监测建筑物健康状态的首选工具。本文将探讨振弦式应变计的工作原理、应用方法以及在建筑健康监测中的最…

IEEE(TOP),CCF推荐,5本毕业神刊,最快7天录用!指标优秀

本期盘点计算机领域超顺快刊&#xff0c;涵盖IEEE1区TOP、CCF推荐SCIE&#xff0c;期刊指标优秀&#xff0c;审稿周期短&#xff0c;质量稳定&#xff0c;有意向作者请看下文&#xff1a; IEEE旗下1区&#xff08;TOP&#xff09; 1 期刊简介 ✅出版社&#xff1a;IEEE ✅影…

fero - yolo - mamba:基于选择性状态空间的面部表情检测与分类

fero - yolo - mamba:基于选择性状态空间的面部表情检测与分类 摘要IntroductionRelated work FER-YOLO-Mamba: Facial Expression Detection and Classification Based on Selective State Space 摘要 面部表情识别&#xff08;FER&#xff09;在理解人类情绪线索方面起着关键…

迅睿CMS中实现关键词搜索高亮

在迅睿CMS系统中实现关键词搜索高亮是提升用户体验和搜索效果的重要手段。当用户搜索某个关键词时&#xff0c;将搜索结果中的关键词高亮显示&#xff0c;可以帮助用户更快速地定位到所需信息。 关键词高亮的实现 在迅睿CMS中&#xff0c;你可以使用内置的dr_keyword_highlig…

Flask应用的部署和使用,以照片分割为例。

任务是本地上传一张照片&#xff0c;在服务器端处理后&#xff0c;下载到本地。 服务器端已经封装好了相关的程序通过以下语句调用 from amg_test import main from test import test main() test() 首先要在虚拟环境中安装flask pip install Flask 文件组织架构 your_pro…

如何在JavaScript/Vue中获取当前时间并格式化输出(精确到时分秒)

如何在JavaScript/Vue中获取当前时间并格式化输出&#xff08;精确到时分秒&#xff09; 不只是树&#xff0c;人也是一样&#xff0c;在不确定中生活的人&#xff0c;能比较经得起生活的考验&#xff0c;会锻炼出一颗独立自主的心。在不确定中&#xff0c;就能学会把很少的养分…

运维自动化之 ansible

目录 一 常见的自动化运维工具 &#xff08;一&#xff09;有哪些常见的 自动化运维工具 &#xff08;二&#xff09;为什么后面都变成用 ansible 二 ansible 基本介绍 1&#xff0c; ansible 是什么 2&#xff0c;ansible能干什么 3&#xff0c;ansible 工作原…

RTD2795T显示芯片触控Touch菜单OSD

RTD显示芯片使用串口Uart接收触摸屏过来的坐标点信息&#xff0c;在菜单OSD上进行触控操作。 RTD全系列显示芯片触控Touch菜单OSD-易显LCD显示方案设计RTD显示器LCD驱动方案设计http://rtddisplay.com/NewsDetail.aspx?id127

动态规划-两个数组的dp问题2

文章目录 1. 不同的子序列&#xff08;115&#xff09;2. 通配符匹配&#xff08;44&#xff09; 1. 不同的子序列&#xff08;115&#xff09; 题目描述&#xff1a; 状态表示&#xff1a; 根据题意这里的dp数组可以定义为二维&#xff0c;并且dp[i][j]表示字符串t的0到i的…

C++ 概览并发

并发 资源管理 资源 程序中符合先获取后释放&#xff08;显式或隐式&#xff09;规律的东西&#xff0c;比如内存、锁、套接字、线程句柄和文件句柄等。RAII&#xff1a; (Resource Acquisition Is Initialization),也称为“资源获取就是初始化”&#xff0c;是C语言的一种管…

华为AI全栈生态布局:中国科技巨头加速创新

华为AI芯片生态全栈深度分析 2024 一、引言 1.1 华为AI芯片发展背景&#xff1a; 华为&#xff0c;通信和消费电子巨头&#xff0c;以其技术创新和远见著称。2013年&#xff0c;华为率先布局人工智能&#xff08;AI&#xff09;&#xff0c;并专注于全栈AI解决方案的开发。华…

微信小程序15: 小程序组件

创建组件 ①在项目的根目录中&#xff0c;鼠标右键&#xff0c;创建components -> test文件夹 ②在新建的components -> test文件夹上&#xff0c;鼠标右键&#xff0c;点击“新建Component‘ ③键入组件的名称之后回车&#xff0c;会自动生成组件对应的4个文件&#…

继承知识及扩展(C++)

1. 继承是什么&#xff1f; 继承是面向对象编程的三大特征之一&#xff0c;也是代码复用的手段之一。之前我们在很多的地方尝试函数的复用&#xff0c;而继承是为了类的复用提供了很好的方式。 &#xff08;1&#xff09;继承的代码怎么写 在一个类后面使用 &#xff1a;继承方…

JMeter - 如何测试REST API / 微服务

概述&#xff1a; 有许多方法和工具可用于测试REST API。 当我需要测试REST API时&#xff0c;在查看了各种工具和选项之后&#xff0c;由于以下原因&#xff0c;我选择了JMeter。 JMeter是免费和开源的。 JMeter可以从CSV文件中直接读取您的测试数据。参数化非常简单。 可以…

基于SWIFT框架的Phi-3推理、微调实战教程

近期&#xff0c; Microsoft 推出 Phi-3&#xff0c;这是 Microsoft 开发的一系列开放式 AI 模型。Phi-3 模型是一个功能强大、成本效益高的小语言模型 (SLM)&#xff0c;在各种语言、推理、编码和数学基准测试中&#xff0c;在同级别参数模型中性能表现优秀。为开发者构建生成…

零基础自学网络安全/Web安全(超详细入门到进阶)学完即可就业(含学习笔记)

一、为什么选择网络安全&#xff1f; 这几年随着我国《国家网络空间安全战略》《网络安全法》《网络安全等级保护2.0》等一系列政策/法规/标准的持续落地&#xff0c;网络安全行业地位、薪资随之水涨船高。 未来3-5年&#xff0c;是安全行业的黄金发展期&#xff0c;提前踏入…

ICode国际青少年编程竞赛- Python-1级训练场-变量练习

ICode国际青少年编程竞赛- Python-1级训练场-变量练习 1、 a 8 for i in range(8):Dev.step(a)Dev.turnRight()a - 12、 a 3 for i in range(4):Dev.step(a)Dev.turnRight()a a 1 Dev.step(5)3、 a 4 for i in range(4):Dev.step(2)Dev.step(-5)Dev.step(3)Spaceship.…