zoukankan      html  css  js  c++  java
  • LeetCode 26 Remove Duplicates from Sorted Array [Array/std::distance/std::unique] <c++>

    LeetCode 26 Remove Duplicates from Sorted Array [Array/std::distance/std::unique] <c++>

    给出排序好的一维数组,删除其中重复元素,返回删除后数组长度,要求不另开内存空间。

    C++

    很简单的题目,但是第一发RE了,找了很久问题出在哪。最后单步调试发现vector.size()返回值是unsigned型的。unsigned型和int型数据运算结果还是unsigned型的。这就导致当数组为空时,nums.size()-1是一个大正整数,循环变量i很大时,执行了越界下标访问,出现了段错误。

    /*
    Status: Runtime Error
    Runtime Error Message:
    Line 933: Char 34: runtime error: reference binding to null pointer of type 'value_type' (stl_vector.h)
    Last executed input:
    []
    */
    class Solution {
    public:
        int removeDuplicates(vector<int>& nums) {
            unique(nums.begin(),nums.end());
            for(unsigned i = 0; i < nums.size()-1; ++i) {
                if(nums[i]>=nums[i+1])return i+1;
            }
            return nums.size();
        }
    };
    

    虽然知道这个题用STL可以很方便,但是看到函数主体只有一行的代码时我还是感觉自己too young

    /*
    Status: Accepted
    */
    class Solution {
    public:
        int removeDuplicates(vector<int>& nums) {
            return distance(nums.begin(),unique(nums.begin(),nums.end()));
        }
    };
    

    然后去学了一发std::distance的用法:就是返回两个迭代器之间的距离。
    因为std::unique返回最后一个不重复元素的迭代器,所以首迭代器与最后一个不重复元素的迭代器的距离就是不重复元素的个数,即数组长度。

    Java

    Python3

  • 相关阅读:
    多表查询
    合并查询与连接查询区别
    union 合并查询语法
    外连接查询left join on 左连接 right join on 右连接
    inner join on 三表查询四表查询5表查询不管多少表都可以
    INEER JOIN..ON两表查询例子
    sql server 三表查询
    两表查询语句
    内连接查询
    转:Exchange Server 2013 一步步安装图解
  • 原文地址:https://www.cnblogs.com/NeilThang/p/10304281.html
Copyright © 2011-2022 走看看