zoukankan      html  css  js  c++  java
  • 80. Remove Duplicates from Sorted Array II

    有一个升序排序的数组.

    For example,
    Given sorted array nums = [1,1,1,2,2,3],

    Your function should return length = 5, with the first five elements of nums being 1, 1, 2, 2 and 3. It doesn't matter what you leave beyond the new length.

    元素可重复2次的数组.后面给出了可重复1次的代码,自然的,就有可重复n次的代码.
    一开始,我错误理解了本题,以为给出数组长度就行了.本题不仅要给出数组长度,还得把原数组 nums 整理成元素可重复 2 次的数组,虽然不要求返回该数组.

    人家想法和代码:
    (O(n)) time, (O(1)) extra space.
    可重复2次的代码.

    int removeDuplicates(vector<int>& A) {
    	// 边扫描,边修改数组
    	int i = 0;
    	for (int n : A) {
    		if (i < 2 || n > A[i - 2])
    			A[i++] = n;
    	}
    	return i;
    }
    

    可重复1次的代码:

    int removeDuplicates(vector<int>& A) {
    	// 边扫描,边修改数组
    	int i = 0;
    	for (int n : A) {
    		if (i < 1 || n > A[i - 1])
    			A[i++] = n;
    	}
    	return i;
    }
    

    自己一开始错误理解题意,写的代码:

    // 下面是我的不符合题意的代码
    // 针对[1,1,1,2,2,3], 可以返回整数5
    // 但本题不仅要求返回长度, 还得修改数组.
    // 若[1,1,1,1,2,2,3], 则代码就不对了.
    int removeDuplicates(vector<int>& A) {
    	const int n = A.size();
    	if (n < 3) return n;
    
    	int num_item = 2;
    
    	for (int i = 2; i < n; i++) {
    		if (A[i] != A[i - 2])
    			num_item++;
    	}
    	return num_item;
    }
    
  • 相关阅读:
    contes配置nginx教程
    jquery 图片放大镜,草稿版
    VUE学习第四次
    VUE学习 第三次
    ryu
    ovs & ryu & mininet
    centos安装mininet 和卸载
    端口镜像
    数据中心网络监控小结
    5、Kafka生产过程分析
  • 原文地址:https://www.cnblogs.com/ZhongliangXiang/p/7445800.html
Copyright © 2011-2022 走看看