首页 > 其他分享 >7--26. 删除有序数组中的重复项

7--26. 删除有序数组中的重复项

时间:2023-11-09 22:15:47浏览次数:35  
标签:新面孔 26 nums -- 题解 int 数组 ans

第一次提交,两个测试用例都通过了,最后提交结果显示为【超出时间限制】,不通过的测试用例为 nums = [1,1]

于是,改

加了 if 判断语句

但还是提交结果显示【超出时间限制】,不通过的测试用例为 nums = [1,2,2]

卒!!!!!!

class Solution {
    public int removeDuplicates(int[] nums) {
        int k = 0;
        int ans = 1;
        for (int i = 0; i < nums.length - 1;  i = k) {
            for (int j = i + 1; j < nums.length; j++) {
                if (nums[j] != nums[i]) {
                    nums[ans] = nums[j];
                    ans++;
                    k = j;
                    break;
                }
                //改:缺少一个逻辑:当输入的数组为nums = [1,1]时,会进入死循环,因为 k 的值不更新,一直为 0
                //所以 i 一直为0, j 一直为 1;所以会超出时间限制
                //加入以下判断
                // if (k == 0) {

                // }

            }
            //if判断语句应该放在第二层循环外面
            if (k == 0) {
                return ans;
            }
        }
        return ans;
    }
}

遂,

看题解

【某位同学的思路】

做了蛮久,题解也看了很久才弄明白。这里记录一下我的通俗的理解。 其实可以看作一个喜新厌旧的人的一个排队列过程。这个人比较喜新厌旧,看到没有见过的数字,就把它按顺序从左到右排好,如果是已经见过的数字就直接忽略掉。 比如0 4 4 7 7 7 9 第一个数字保持不动。 然后往后面看看到第一个4,没见过,是第一次看到4,于是把它排到0的后面。 再往后看,又看到一个数字4,老面孔直接忽略掉。 再往后看看到一个数字7,是新面孔。于是把她拉到最左边,放在紧跟着0 4的位置。 再往后看是7,直接忽略,接着又是7,直接忽略。 直到看到新的数字9,然后把然后把放到0 4 7的后面。 可以理解为左边是所有的新面孔的队列,而快指针就是评审官,负责找到新面孔。

这么理解的话去看很多人的代码和解释,我觉得会更容易理解一些。

【但我看了之后有个疑问:它怎么辨别是不是新面孔】

【看了一个前排的题解之后,疑问得到回答】:先放过程

 在这个题解中 用 p 指针及前面的元素都是出现过的,用 q 指针去探寻 q 后面的元素是不是新面孔,因为题目中说了,数组是 非严格递增排序的数组,既有序数组

【我用了三个指针!!!都没完美解决这道题!!! 没事儿~再接再厉嘛~这才刚开始捏,梅花香自苦寒来!】

插入别人的代码:

 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/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

 

标签:新面孔,26,nums,--,题解,int,数组,ans
From: https://www.cnblogs.com/18191xq/p/17822974.html

相关文章

  • centos7.9安装kubernetes1.27.4版本
    ./etc/os-releasecolor(){RES_COL=60MOVE_TO_COL="echo-en\\033[${RES_COL}G"SETCOLOR_SUCCESS="echo-en\\033[1;32m"SETCOLOR_FAILURE="echo-en\\033[1;31m"SETCOLOR_WARNING="echo-en\\0......
  • MySQL 数据库表格创建、数据插入及获取插入的 ID:Python 教程
    创建表格要在MySQL中创建表格,请使用"CREATETABLE"语句。确保在创建连接时定义了数据库的名称。示例创建一个名为"customers"的表格:importmysql.connectormydb=mysql.connector.connect(host="localhost",user="yourusername",password="yourpassword&qu......
  • netstat -ano | findstr :80 ,80端口被占用解决
    C:\Users\17482>netstat-ano|findstr:80TCP0.0.0.0:800.0.0.0:0LISTENING5312TCP0.0.0.0:8080.0.0.0:0LISTENING4688TCP192.168.43.14:56688106.39.203.229:80ESTABLISHED8052TCP192.168.43.14:56760124.236.26.167:80ESTABLISHED20068TCP[::]......
  • Sublime Text 配置指北
    分享笔者配置的sublimetext的方法。因为笔者是搞竞赛的,所以配置偏竞赛向。环境:NOILinux2.0.(Ubuntu20)下载&卸载在这个链接下载。然后打开并安装即可。卸载同理,打开安装包并点击红色垃圾桶即可。配置卸载配置文件(恢复默认):先关闭SublimeText。然后点开主目录,按下......
  • python升级到3.12版本, 开发模式安装包, 在vscode下Pylance无法解析的问题处理
    问题描述在python3.11版本下开发python库,为方便调测,使用开发模式安装包.使用如下命令:pipinstall-e.其中-e参数表示开发模式下安装python包,它并没有把包相关文件拷贝到site-packages目录,而是创建一个链接指向当前的开发库.这样,当自己开发的包修改后会立即生效,......
  • 计算机组成原理之指令
    引言关于riscv操作数32个寄存器|X0~X31|快速定位数据。在riscv中,只对寄存器中的数据执行算术运算2^61个存储字|只能被数据传输指令访问。riscv体系采用的是字节寻址。一个寄存器是8bytes,64位(doubleword)每次取的最小单位是一个byte注意:当函数参数大于8个的时候,会占用内......
  • 高级统计 | Tricks & Review
    打算写一个综合性比较强的文章。全文分为六个章节:基本概念,回归,分类,模型选择,评价指标,无监督学习。基本概念1基本概念线性代数的知识十分有意义。在此假定已知矩阵的加减乘运算。1.1矩阵的初等变换初等变换专门设计用来执行某种操作,如行(列)交换、行(列)倍乘,或者将一个行(......
  • RE:从零开始的计算几何生活
    RE:从零开始的计算几何生活计算几何算法汇总爱来自yyc。定义一些坏文明:#definedbdoubleconstdbeps=1e-10;误差计算:intsign(doublex){ returnx>eps?1:(x<-eps?-1:0);}向量:structvec{ doublex,y;voiddebug(){printf("%.3lf%.3......
  • 左右手坐标系以及逆时针正方向的判断
    A 判断三维坐标系旋转正方向的简单方法_xyz三个轴的方向图片-CSDN博客判断三维坐标系旋转正方向的简单方法引言做iOS开发,不免要接触到一些特效,其中不乏3D特效,这时候就要对iOS所使用的坐标系了解才行。若不限于iOS开发,还有MacOS开发,若不知道它们所使用坐标系的不同,初......
  • java StringBuilder对象和StringJoiner
    普及:因为StringBuilder是Java已经写好的类java在底层对他做了一些特殊处理。打印对象不是地址值而是属性值。packagecom.elaina.test2;publicclasstest10{publicstaticvoidmain(String[]args){//1.创建对象StringBuildersb=newSt......