首页 > 其他分享 >leetcode删除有序数组中的重复项

leetcode删除有序数组中的重复项

时间:2024-04-08 13:33:26浏览次数:21  
标签:删除 nums int 元素 ++ length 数组 leetcode

一、题目

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

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

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

二、代码


class Solution {
    public int removeDuplicates(int[] nums) {
        // int p = nums[0];
        // int q = nums[1];
        int p = 0, q = 1;
        // for(int i = 0; i < nums.length; i++){
            
        // }
        while(q < nums.length){
            if(nums[p] == nums[q]){
                q++;
            } else{
                nums[p+1] = nums[q];
                p++;
            }
        }
        return p+1;
    }
}

反思:

第一: p和q是两个指针,所得他们是数组元素的下标,而不是数组所对应的第一个、第二个元素。

第二:q指针是不断地往后走的,当它到达原数组的末尾时,我们的循环结束,不再往后找,而我写的循环根本就没有用到,i也毫无牵连,不知道脑子咋了。 

标签:删除,nums,int,元素,++,length,数组,leetcode
From: https://blog.csdn.net/2301_76876837/article/details/137377469

相关文章

  • LeetCode 2220.转换数字的最少位翻转次数
    一、题目二、知识点符号描述运算规则&与两位都为1结果为1|或两位都为0结果为0^异或两位相同为0不同为1~取反(非)0变1,1变0<<左移二进制位全部左移,高位丢弃,低位补0>>右移二进制位全部右移,低位丢弃,高位补符号位>>>无符号右移二进......
  • 数组的常规操作
        java中对数组的操作有遍历和拷贝两种,遍历指的是通过循环操作遍历数组的所有元素,简单理解就是通过循环操作访问数组中的所有元素,因此这里就要用到循环结构了。一般情况下,采用循环结构来遍历一维数组,采用循环的嵌套结构来访问来遍历多维数组。数组的拷贝操作指的将某......
  • 刷题(一) 数组
    数组主要用到的思想:二分法双指针法滑动窗口vector的使用https://blog.csdn.net/u014779536/article/details/111239643https://www.runoob.com/w3cnote/cpp-vector-container-analysis.htmlvector<vector>res(n,vector(n,0));//使用vector定义一个二维数组......
  • 数组的扩展
    数组的扩展扩展运算符扩展运算符(spread)是三个点(...)。它好比rest参数的逆运算,将一个数组转为用逗号分隔的参数序列。console.log(...[1,2,3])//123console.log(1,...[2,3,4],5)//12345[...document.querySelectorAll('div')]//[<div>,<div>,<div>]......
  • 【LeetCode刷题记录】15. 三数之和
    15三数之和给你一个整数数组nums,判断是否存在三元组[nums[......
  • Leetcode 2894. 分类求和并作差
    https://leetcode.cn/problems/divisible-and-non-divisible-sums-difference/submissions/521201434/给你两个正整数n和m。现定义两个整数num1和num2,如下所示:num1:范围[1,n]内所有无法被m整除的整数之和。num2:范围[1,n]内所有能够被m整除的整数之和。......
  • LeetCode刷题记录——day10
    1、https://leetcode.cn/problems/rotate-image/description/?envType=study-plan-v2&envId=2024-spring-sprint-100classSolution{public:voidrotate(vector<vector<int>>&matrix){intn=matrix.size();for(inti=0;......
  • 用C语言实现,找出一个整数数组中,第二大的数
    用C语言实现,找出一个整数数组中,第二大的数/********************************************************************* filename: * author :[email protected]* date :2024/04/07* function:找出一个整数数组中,第二大的数* note :None** Copy......
  • c语言的数组以及简单函数
    数组与函数的基本定义数组正常数组数组的四要素数组名:本质上就是一个标识符常量元素:同一个数组中的元素数据类型要相同下标:数组的索引可以通过下标查找数组里的某一个值从0开始数组的长:表示元素的数量数组的定义先指定元素类型与个数,后在进行赋值(初始化)intarr[7];......
  • 【SQL】数据定义语言(DDL):包括创建、修改和删除数据库对象
    数据定义语言(DDL)是用于定义和管理数据库中的数据结构和对象的SQL语言子集。它允许用户创建、修改和删除数据库中的表、索引、触发器、序列、存储过程等对象。DDL语句在数据库系统中执行时,通常会影响整个数据库的结构,而不是单个的数据记录。以下是DDL中一些常用语句的详细介绍......