力扣随笔删除有序数组中的重复项(简单26)

思路:根据类似于滑动窗口的思想,定义一个指针;使指针左边的区域全部为不重复元素(包括指针所指的数字)

以示例2为例,left:红色加粗 遍历指针i:黑色加粗 窗口范围,左边界到右边界左闭右闭

        0,0,1,1,1,2,2,3,3,4        第一轮:nums[right] == nums[i] -> i++

        00,1,1,1,2,2,3,3,4        第二轮:nums[right] == nums[i] -> i++

        0,0,1,1,1,2,2,3,3,4        第三轮:nums[right] != nums[i] -> 窗口扩大,将right++,把nums[i]的数值赋给nums[right],i++;

        01,1,1,1,2,2,3,3,4        第四轮:nums[right] == nums[i] -> i++

        01,1,1,1,2,2,3,3,4        第五轮:nums[right] == nums[i] -> i++

        01,1,1,1,2,2,3,3,4        第六轮:nums[right] != nums[i] -> 窗口扩大,将right++,把nums[i]的数值赋给nums[right],i++;

        0,1,2,1,1,2,2,3,3,4        第七轮:nums[right] == nums[i] -> i++

        0,1,2,1,1,2,2,3,3,4        第八轮:nums[right] != nums[i] -> 窗口扩大,将right++,把nums[i]的数值赋给nums[right],i++;

        0,1,2,3,1,2,2,3,3,4        第九轮:nums[right] == nums[i] -> i++

        0,1,2,3,1,2,2,3,3,4        第十轮::nums[right] != nums[i] -> 窗口扩大,将right++,把nums[i]的数值赋给nums[right],i++;

        0,1,2,3,4,2,2,3,3,4        i超出范围,退出遍历

红4右边区域包括红4即所求

Java实现:

class Solution {public int removeDuplicates(int[] nums) {int right = 0;for(int i = 0;i < nums.length;i++){if(nums[i] != nums[right]){left++;nums[right] = nums[i];}}return right + 1;}
}

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

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

相关文章

剪辑视频调色怎么让画质变得清晰 视频剪辑调色技巧有哪些方面 剪辑视频免费的软件有哪些 会声会影调色在哪里 会声会影模板素材

视频调色的作用有很多&#xff0c;除了进行风格化剪辑以外&#xff0c;还可以让作品的画质变得清晰。通过调色来增强画面的清晰度&#xff0c;在观感上也会显得十分自然。视频调色的技巧有很多&#xff0c;并且原理大都十分简单。有关剪辑视频调色怎么让画质变得清晰&#xff0…

linux系统---httpd

目录 Internet的起源 一、http协议——超文本传输协议 1.http相关概念 二、HTTP请求访问的完整过程 1、 建立连接 2、 接收请求 3、 处理请求 常用请求Method: GET、POST、HEAD、PUT、DELETE、TRACE、OPTIONS 3.1 常见的HTTP方法 3.2 GET和POST比较 4、访问资源 …

推荐一个 Obsidian 的 ChatGPT 插件

源码地址&#xff1a;https://github.com/nhaouari/obsidian-textgenerator-plugin Text Generator 是目前我使用过的最好的 Obsidian 中的 ChatGPT 功能插件。它旨在智能生成内容&#xff0c;以便轻松记笔记。它不仅可以在 Obsidian 中直接使用 ChatGPT&#xff0c;还提供了优…

Linux键盘输入实验-创建按键的设备节点

一. 简介 Linux内核针对 GPIO驱动开发,提供了 pinctrl子系统与gpio子系统,方便了 GPIO驱动程序的开发。 本文开始学习如何利用 Linux内核的 pinctrl子系统,与 gpio子系统提供的 API函数,开发按键驱动。 这里主要学习在设备树文件中创建按键的设备节点。 二. Linux按键…

介绍 Gradio 与 Hugging Face

&#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 我们可以使用 Gradio 库为我们的模型构建演示。Gradio 允许您完全使用 Python 为任何机器学习模型构建、自定义和共享基于 Web 的演示。使机器学习模型变得可交互和易于使用。 为什么首先要为您的机器…

JavaAPI常用类03

目录 java.lang.Math Math类 代码 运行 Random类 代码 运行 Date类/Calendar类/ SimpleDateFormat类 Date类 代码 运行 Calendar类 代码 运行 SimpleDateFormat类 代码一 运行 常用的转换符 代码二 运行 java.math BigInteger 代码 运行 BigDecimal …

sonar-java 手写一个规则-单元测试分析

前言 最近做项目&#xff0c;定制sonar规则&#xff0c;提高Java代码质量&#xff0c;在编写的sonar规则&#xff0c;做验证时&#xff0c;使用单元测试有一些简单的心得感悟&#xff0c;分享出来。 自定义规则模式 sonar的自定义规则很简单&#xff0c;一般而言有2种模式可…

Spring默认线程池SimpleAsyncTaskExecutor

Spring默认线程池SimpleAsyncTaskExecutor 简介 SimpleAsyncTaskExecutor&#xff0c;不是真的线程池&#xff0c;这个类不重用线程&#xff0c;每次调用都会创建一个新的线程&#xff0c;没有最大线程数设置。并发大的时候会产生严重的性能问题。在Java中创建线程并不便宜&a…

springBoot整合Redis(一、Jedis操作Redis)

在springboot环境下连接redis的方法有很多&#xff0c;首先最简单的就是直接通过jedis类来连接&#xff0c;jedis类就相当于是redis的客户端表示。 但是因为现在比较常用的是&#xff1a;StringRedisTemplate和RedisTemplate&#xff0c;所以jedis只做简单的介绍。 一、Jedis…

Linux调用可执行程序:system()函数和execl函数

system()函数&#xff1a; system()函数是一个在C/C编程语言中的库函数&#xff0c;用于在操作系统中执行命令。 函数声明如下&#xff1a; int system(const char *command);该函数接受一个指向以空字符结尾的字符串的指针作为参数&#xff0c;该字符串包含要执行的命令。函…

【Linux进程】进程状态---进程僵尸与孤儿

&#x1f4d9; 作者简介 &#xff1a;RO-BERRY &#x1f4d7; 学习方向&#xff1a;致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f4d2; 日后方向 : 偏向于CPP开发以及大数据方向&#xff0c;欢迎各位关注&#xff0c;谢谢各位的支持 目录 1.进程排队2.进程状态…

RCE (Remote ????? execution) --->CTF

看这个标题就知道今天的内容不简单&#xff01;&#xff01;&#xff01;&#xff01; 那么就来讲一下我们的RCE吧 目录 ​编辑 1. &&#xff1f; |&#xff1f; ||&#xff1f; &&&#xff1f; 2.PHP命令执行函数&& ||"" 1."" &…