删除有序数组的重复项-------题解报告

题目:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

题解:

个人的想法比较粗糙,因为是递增数组,所以如果有相同的数组,必然相邻,所以只需要判断相邻元素是否相等,相等则将数组从相等处整体前移,同时让r--,当i>=r-1时,就说判断结束的时刻。

写完之后看了大佬的题解,发现用双指针,这题会更简单。

首先让指针p都处在数组开头,q在p前面,然后让q++,再判断nums[p]和nums[q]是否相等,

如果相等,q 后移 1 位 如果不相等,将 q 位置的元素复制到 p+1 位置上,p 后移一位,q 后移 1 位 重复上述过程,直到 q 等于数组长度。

返回 p + 1,即为新数组长度。

代码:

本人

    public int removeDuplicates(int[] nums) {int l=0,r=nums.length;for(int i=0;i+1<nums.length;i++){if(nums[i]==nums[i+1]){int k=nums[i];for(int j=i+1;j+1< nums.length;j++){nums[j]=nums[j+1];}nums[nums.length-1]=k;if(i>r-1||i==r-1){
//                    System.out.println(i);break;}i--;l++;r--;
//                System.out.println(l+"    "+r+"   "+i);
//                for(int p=0;p< nums.length;p++)
//                    System.out.print(nums[p]+"  ");
//                System.out.println();}}return nums.length-l;}

大佬

 public int removeDuplicates(int[] nums) {if(nums == null || nums.length == 0) return 0;int p = 0;int q = 1;while(q < nums.length){if(nums[p] != nums[q]){nums[p + 1] = nums[q];p++;}q++;}return p + 1;
}作者:Max
链接:https://leetcode.cn/problems/remove-duplicates-from-sorted-array/solutions/34033/shuang-zhi-zhen-shan-chu-zhong-fu-xiang-dai-you-hu/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

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

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

相关文章

【Docker 内核详解】namespace 资源隔离(四):Mount namespace Network namespace

【Docker 内核详解 - namespace 资源隔离】系列包含&#xff1a; namespace 资源隔离&#xff08;一&#xff09;&#xff1a;进行 namespace API 操作的 4 种方式namespace 资源隔离&#xff08;二&#xff09;&#xff1a;UTS namespace & IPC namespacenamespace 资源隔…

自定义Flink kafka连接器Decoding和Serialization格式

前言 使用kafka连接器时&#xff1a; 1.作为source端时&#xff0c;接受的消息报文的格式并不是kafka支持的格式&#xff0c;这时则需要自定义Decoding格式。 2.作为sink端时&#xff0c;期望发送的消息报文格式并非kafka支持的格式&#xff0c;这时则需要自定义Serializati…

python中使用xml.dom.minidom模块读取解析xml文件

python中可以使用xml.dom.minidom模块读取解析xml文件 xml.dom.minidom模块应该是内置模块不用下载安装 对于一个xml文件来说比如这个xml文件的内容为如下 <excel version"1.0" author"huangzhihui"><table id"1"><colum id&qu…

第四节(1):EXCEL中判断一个WORD文件是否被打开

《VBA信息获取与处理》教程(10178984)是我推出第六套教程&#xff0c;目前已经是第一版修订了。这套教程定位于最高级&#xff0c;是学完初级&#xff0c;中级后的教程。这部教程给大家讲解的内容有&#xff1a;跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互联网…

控制一个游戏对象的旋转和相机的缩放

介绍 这段代码是一个Unity游戏开发脚本&#xff0c;它用于控制一个游戏对象的旋转和相机的缩放。以下是代码的主要功能&#xff1a; 控制游戏对象的旋转&#xff1a; 通过按下Q键和W键&#xff0c;用户可以选择以逆时针或顺时针方向绕游戏对象的Y轴进行旋转。旋转角度和速度可…

js中nan有什么用,如何判断

在JavaScript中&#xff0c;NaN表示“不是一个数字”&#xff0c;当一个数值无法被解析为数字时会返回NaN。NaN通常表示一个错误的或非法的数值操作结果。例如&#xff0c;当尝试将非数字字符串解析为数字时&#xff0c;将返回NaN。 NaN具有以下特点&#xff1a; NaN不等于任何…

shell命令以及运行原理

Linux严格意义上说的是一个操作系统&#xff0c;我们称之为“核心&#xff08;kernel&#xff09;“ &#xff0c;但我们一般用户&#xff0c;不能直接使用kernel。 而是通过kernel的“外壳”程序&#xff0c;也就是所谓的shell&#xff0c;来与kernel沟通。如何理解&a…

Ubuntu 20.04装机

安装搜狗输入法&#xff1a; Ubuntu 20.04安装sogou输入法_ubuntu20.04 搜狗输入法-CSDN博客a 安装chrome浏览器&#xff1a; ubuntu20.04安装Chrome浏览器-CSDN博客 安装nvidia驱动 ubuntu20安装nvidia驱动-CSDN博客 安装cudnn ubuntu 20 安装 CUDA-CSDN博客

【LeetCode】22. 括号生成

1 问题 数字 n 代表生成括号的对数&#xff0c;请你设计一个函数&#xff0c;用于能够生成所有可能的并且 有效的 括号组合。 示例 1&#xff1a; 输入&#xff1a;n 3 输出&#xff1a;[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”] 示例 2&#xff1a; 输…

rabbitMQ的知识点

RabbitMQ是一种消息队列软件&#xff0c;它实现了高度可靠的消息传递机制。RabbitMQ支持多种消息协议&#xff0c;包括AMQP、STOMP、MQTT等&#xff0c;比较灵活。以下是一些rabbitmq的知识点&#xff1a; 1. 消息队列&#xff1a;消息队列是一种分布式系统中广泛使用的通信模…

ESP32-IPS彩屏ST7789-Arduino-简单驱动

目的&#xff1a; 使ESP32能够驱动点亮ST7789显示屏 前提条件&#xff1a; ESP32 ST7789 &#xff08;240 x240&#xff0c;IPS&#xff09; 杜邦线 Arduino 过程&#xff1a; 0x00--接线 0x01--驱动&#xff1a; 彩屏驱动库 针对不同的彩屏驱动芯片&#xff0c;常用的 Arduino…

Go实现CORS(跨域)

引言 很多时候&#xff0c;需要允许Web应用程序在不同域之间&#xff08;跨域&#xff09;实现共享资源。本文将简介跨域、CORS的概念&#xff0c;以及如何在Golang中如何实现CORS。 什么是跨域 如果两个 URL 的协议、端口&#xff08;如果有指定的话&#xff09;和主机都相…

Linux性能优化--实用工具:性能工具助手

8.0 概述 本章介绍一些在Linux系统上可用的实用程序&#xff0c;它们能够加强性能工具的有效性和可用性。实用工具本身不是性能工具&#xff0c;但是当它们与性能工具一起使用时&#xff0c;它们可以帮助完成如下功能&#xff1a;自动执行繁琐的任务、分析性能统计数据&#x…

资源受限MCU Flash空间占用优化

资源受限MCU Flash空间占用优化步骤&#xff1a; 避免重复功能&#xff0c;排查软件工程中&#xff0c;重复功能的代码片段&#xff0c;抽象出来&#xff0c;重新进行封装&#xff1b;减少内联函数inline&#xff0c;内联函数过大且过多的调用无疑会增加代码量&#xff0c;占用…

二叉树的三种遍历方式的本质

二叉树的定义就不在这里多说了&#xff0c;下面这个图就是一个简单的二叉树&#xff1a; 二叉树的三种遍历方式&#xff1a; 前序遍历&#xff1a;头左右&#xff0c;也就是先头后左再右&#xff1a;1245367 public static void prePrint(BinaryTreeNode root) {if (root ! n…

BIM轻量化引擎的国内外发展现状

随着BIM技术的不断发展&#xff0c;对BIM技术应用要求已不局限于模型及基于模型的应用&#xff0c;其在经历了方案展示、BIM建模及应用两个阶段后&#xff0c;逐步向基于BIM平台的信息化管理模式升级&#xff0c;“模型是基础&#xff0c;管理是核心”的理念成为BIM应用的主流方…

一些FreeRTOS系统的usb命令使用方法

在全志R128开发过程中总结一些RTOS系统的usb命令使用方法&#xff0c;以下命令在所有RTOS平台&#xff08;MELIS/FREERTOS&#xff09;都可以使用 通过menuconfig打开usb模块功能 RTOS通过usb命令集成了测试用例。通过如下命令即可显示支持的功能&#xff1a; //输入如下命令…

rsyslog实现将日志存储到mysql中

​ 前提&#xff1a;准备好msql server或mariadb server&#xff1b; ​ 1、安装rsyslog连接至mysql server的驱动模块&#xff1b; [13:24 rootcentos6.8~]# yum install -y rsyslog-mysql [13:24 rootcentos6.8~]# rpm -ql rsyslog-mysql /lib64/rsyslog/ommysql.so /usr/…

6.strchr函数和strrchr函数

#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <string.h>/*char *strchr(char const *str, int ch);strchr在字符串中str中查找字符ch第1次出现的位置&#xff0c;找到后函数返回一个指向该位置的指针&#xff1b;如果该字符并不存在于字符串中&a…

EFLK与logstash过滤

目录 一、Filebeat工作原理&#xff1a; 二、为什么要使用Filebeat&#xff1a; 三、Filebeat和Logstash的区别&#xff1a; 四、logstash 的过滤插件&#xff1a; 五、FilebeatELK 部署&#xff1a; 1. 安装filebeat&#xff1a; 2. 设置 filebeat 的主配置文件&#xff1…