我是靠谱客的博主 强健书本,最近开发中收集的这篇文章主要介绍leetcode 刷题记(001--数组),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

题目描述:
给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。
不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。

input:nums = [1,1,2],
output: [1,2]
返回 2

input:nums = [0,0,1,1,1,2,2,3,3,4]
output:[0, 1, 2, 3, 4]
返回 5

题目链接:click me !

思路:使用双指针的思想

  1. 给一个 len 用来记录返回长度, 初始化为 0
  2. 从索引 1 开始遍历数组,如果后一个元素不等于前一个元素,就将该元素赋值给 nums[++ len]
  3. 返回 len + 1 (我们要返回的是新数组的长度,所以要加上第一个元素nums[0])
public class Solution01 {

    public static int removeDuplicates(int[] nums) {

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

    public static void main(String[] args) {
        int[] nums = {0, 0, 1, 1, 1, 2, 2, 3, 3, 4};
        int len = removeDuplicates(nums);
        for (int i = 0; i < len; i++) {
            System.out.print(nums[i] + " ");
        }
    }
}

最后

以上就是强健书本为你收集整理的leetcode 刷题记(001--数组)的全部内容,希望文章能够帮你解决leetcode 刷题记(001--数组)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(89)

评论列表共有 0 条评论

立即
投稿
返回
顶部