zoukankan      html  css  js  c++  java
  • lintcode :Remove Duplicates from Sorted Array 删除排序数组中的重复数字

    题目:

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

     给定一个排序数组,在原数组中删除重复出现的数字,使得每个元素只出现一次,并且返回新的数组的长度。

    不要使用额外的数组空间,必须在原地没有额外空间的条件下完成。

     样例

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

    解题:

    用Python直接搞

    Python程序:

    class Solution:
        """
        @param A: a list of integers
        @return an integer
        """
        def removeDuplicates(self, A):
            # write your code here
            ALen =len(A)
            i = 0
            while i<ALen-1:
                if A[i]==A[i+1]:
                    del A[i+1]
                    ALen-=1
                else:
                    i+=1
            return ALen
    View Code

    总耗时: 755 ms

    Java程序:

    public class Solution {
        /**
         * @param A: a array of integers
         * @return : return an integer
         */
        public int removeDuplicates(int[] nums) {
            // write your code here
            int i = 0;
            int numsLen = nums.length;
            while(i<numsLen-1){
                if(nums[i]==nums[i+1]){
                    for(int j=i+1;j<numsLen-1;j++)
                        nums[j]=nums[j+1];
                    numsLen-=1;
                }else
                    i+=1;
            }
            return numsLen;
        }
    }
    View Code

    总耗时: 2393 ms

    时间复杂度:O(n2)
    这里原始数据是有序的,时间复杂度降到O(n)

    java程序:

    public class Solution {
        /**
         * @param A: a array of integers
         * @return : return an integer
         */
        public int removeDuplicates(int[] nums) {
            // write your code here
            if (nums == null || nums.length == 0) {
                return 0;
            }
            
            int size = 0;
            for (int i = 0; i < nums.length; i++) {
                if (nums[i] != nums[size]) {
                    nums[++size] = nums[i];
                }
            }
            return size + 1;
        }
    }
    View Code

    总耗时: 1824 ms

  • 相关阅读:
    主线程MainThread与渲染线程RenderThread
    杀死进程的几种方式
    Android App的设计架构:MVC,MVP,MVVM与架构经验谈
    动画完全解析(二):补间动画原理及自定义动画
    SublimeText教程
    JqGrid自定义的列
    js 除法 取整
    js日期字符串增加天数的函数
    Oracle中的rownum和rowid
    jQuery判断对象是否是函数
  • 原文地址:https://www.cnblogs.com/theskulls/p/4868308.html
Copyright © 2011-2022 走看看