zoukankan      html  css  js  c++  java
  • leetcode——80.删除排序数组中的重复项2

    自己做出来效果并不是很好:

    class Solution:
        def removeDuplicates(self, nums) -> int:
            i=0
            while i<len(nums)-2:
                j,k=i+1,i+2
                if nums[i]==nums[j]:
                    if nums[j]==nums[k]:
                        nums.pop(k)
                    else:
                        i,j=i+2,j+2
                else:
                    i,j=i+1,j+1
            return len(nums)
    执行用时 :104 ms, 在所有 Python3 提交中击败了23.37%的用户
    内存消耗 :13.9 MB, 在所有 Python3 提交中击败了5.08%的用户
     
    看看人家执行用时40ms的例子:
    class Solution:
        def removeDuplicates(self, nums: List[int]) -> int:
            c=1
            n=len(nums)
            if n<=2:
                return n
            
            for i in range (2,n):
                if nums[i]!=nums[c-1]:
                    c=c+1
                    nums[c]=nums[i]
            return c+1

                                                            ——2019.10.8


    代码略长,但是扩展性应该好一点,效果还好。

    public int removeDuplicates(int[] nums) {  //最多出现两次,删除重复项,返回新的数组长度
            //还是应该采用双指针进行遍历
            //使用一个Int变量来控制次数不超过2
            //使用一个int变量来记录字符串的有效长度
            int len = nums.length;
            if(len<3){
                return len;
            }
            int count = 1;
            int length = 1;
            int i = 1;
            int j = 1;
            while(i<len){  //i用来对原始数组进行遍历  这里的nums是长度至少为3的情况、
                if(nums[i] == nums[i-1]){
                    if(count < 2){
                        nums[j] = nums[i];
                        i++;
                        count ++ ;
                        length ++ ;
                        j ++ ;
                    }else{  //如何删除重复项
                        i++;
                    }
                }else{
                    nums[j] = nums[i];
                    j++;
                    count = 1;
                    i++;
                    length++;
                }
            }
            for(int k = 0;k<length;k++){
                System.out.println(nums[k]);
            }
            return length;
        }

     ——2020.7.8

     
     
    我的前方是万里征途,星辰大海!!
  • 相关阅读:
    Django框架详细介绍---ORM相关操作---select_related和prefetch_related函数对 QuerySet 查询的优化
    Django框架详细介绍---ORM相关操作
    Django框架详细介绍---ORM---图书信息系统专题训练
    Django框架详细介绍---模板系统
    Django框架详细介绍---视图系统
    Django简单实例
    Django练习
    Django的rom
    web框架本质及Django的安装
    面向对象基础复习
  • 原文地址:https://www.cnblogs.com/taoyuxin/p/11636442.html
Copyright © 2011-2022 走看看