zoukankan      html  css  js  c++  java
  • lintcode-100-删除排序数组中的重复数字

    100-删除排序数组中的重复数字

    素只出现一次,并且返回新的数组的长度。
    不要使用额外的数组空间,必须在原地没有额外空间的条件下完成。

    样例

    给出数组A =[1,1,2],你的函数应该返回长度2,此时A=[1,2]。

    标签

    数组 两根指针 脸书

    思路

    将数组分为两段,前一段是已经删除重复元素的数组,后一段是未删除重复元素的数组
    用下标 i 指向非重数组最大值(即数组最右边的元素),下标 j 指向重复数组中第一个与非重数组中元素不同的元素
    将 j 指向的元素值赋给 i+1 指向的元素,即可增大非重数组

    code

    class Solution {
    public:
        /**
         * @param A: a list of integers
         * @return : return an integer
         */
        int removeDuplicates(vector<int> &nums) {
            // write your code here
            int size = nums.size(), i = 0, j = 1;
            if(size <= 0) {
                return 0;
            }
            int  newSize = 1;
            while(j<size) {
                if(nums[i] < nums[j]){
                    nums[i+1] = nums[j];
                    i++;
                    j++;
                    newSize++;
                }
                else {
                    j++;
                }
            }
            return newSize;
        }
    };
    
  • 相关阅读:
    VUE 入门基础(2)
    VUE 入门基础(1)
    常用正则表达式
    git 常用命令
    JavaScript 常用算法
    SVG 使用
    移动前端头部标签(HTML5 meta)
    开发常用小demo 整理
    Reactjs 入门基础(三)
    Reactjs 入门基础(二)
  • 原文地址:https://www.cnblogs.com/libaoquan/p/7157733.html
Copyright © 2011-2022 走看看