zoukankan      html  css  js  c++  java
  • 【算法】LeetCode算法题-Remove Duplicates from Sorted Array

    这是悦乐书的第149次更新,第151篇原创

    01 看题和准备

    今天介绍的是LeetCode算法题中Easy级别的第8题(顺位题号是26)。给定一个已经排序(由小到大)的整数数组(元素可以重复),计算其中不重复元素的个数n,并将数组的前n个元素依次赋值为筛选后的不重复元素。不许使用新数组接收数据。例如:

    nums = {1,1,2}
    输出不重复元素的个数为2
    数组前2个元素为1和2,即nums = {1,2,2}

    本次解题使用的开发工具是eclipse,jdk使用的版本是1.8,环境是win7 64位系统,使用Java语言编写和测试。

    02 分析并解题

    特殊情况:如果数组中元素个数小于等于1,其不重复元素的个数即为数组的长度,也不用重新给前面的元素重新赋值。

    获取第一个元素,与第二个元素比较,如果两数不等,count加1,数组的新第2个元素为原数组第2个元素,依次往后循环。

    最后count需要加1,因为在第一次循环两数不等的时候,count是从第二个元素开始累加的,还需要算上最开始的第一位元素。

    public int removeDuplicates(int[] nums) {
        if (nums.length <= 1) {
            return nums.length;
        }
        int count = 0;
        for(int i=0; i<nums.length-1; i++){
            if (nums[i] != nums[i+1]) {
                count++;
                nums[count] = nums[i+1];
            }
        }
        return count+1;
    }
    

    03 小结

    此题比较简单,如果大家有什么好的解法思路、建议或者其他问题,可以下方留言交流,点赞、留言、转发就是对我最大的回报和支持!

  • 相关阅读:
    设计模式之 原型模式
    设计模式之 策略模式
    设计模式之 单例模式
    使用IntelliJ IDEA 15和Maven创建Java Web项目(转)
    Java 内存分配全面浅析(转)
    java常量池概念 (转)
    java基本类型和包装类的区别(转)
    JAVA数据类型(转)
    SQL SERVER 2008 服务器登录名、角色、数据库用户、角色、架构的关系(转)
    视图的好处(转)
  • 原文地址:https://www.cnblogs.com/xiaochuan94/p/9834468.html
Copyright © 2011-2022 走看看