LeetCode-探索-初级算法-数组-1.从排序数组中删除重复项(个人做题记录,不是习题讲解)

LeetCode-探索-初级算法-数组-1.从排序数组中删除重复项(个人做题记录,不是习题讲解)

LeetCode探索-初级算法:https://leetcode-cn.com/explore/interview/card/top-interview-questions-easy/

  1. 从排序数组中删除重复项

    • 语言:C++

    • 执行时间196ms:

    • 个人思路:用A和B表示遍历器,当A和B相同时,A++;当A指向的值和B指向的值相同时,删除A指向的值;当A指向的值和B不同时,B++;

    class Solution {
    public:
        int removeDuplicates(vector<int>& nums) {
            vector<int>::iterator itr = nums.begin();
            vector<int>::iterator start = nums.begin();
            while(itr!=nums.end()){
                if(itr==start)
                    ++itr;
                else{
                    if(*itr==*start){
                        nums.erase(itr);
                    }else{
                        ++start;
                    }
                }
            }
            return nums.size();
        }
    };
    
    • 语言:java
    • 执行时间:1ms
    • 个人思路:这个是看了别人的代码后,又写了一遍的,才知道原来不用真的删除,只要覆盖掉,然后最后返回数组大小就好了。
    • 参考网址:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/solution/shan-chu-pai-xu-shu-zu-zhong-de-zhong-fu-xiang-by-/
    class Solution {
        public int removeDuplicates(int[] nums) {
            int i = 1;
            int j = 1;
            int len = nums.length;
            for(;i<len;++i){
                if(nums[i]!=nums[i-1]){
                    nums[j++] = nums[i];
                }
            }
            return j;
        }
    }
    

你可能感兴趣的:(LeetCode,原创,非讲解)