Remove Duplicates from Sorted Array

简介: Remove Duplicates from Sorted ArrayGiven a sorted array, remove the duplicates in place such that each element appear only once and return the new length.

Remove Duplicates from Sorted Array

Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length.

Do not allocate extra space for another array, you must do this in place with constant memory.

For example,
Given input array nums = [1,1,2],

Your function should return length = 2, with the first two elements of nums being 1 and 2 respectively. It doesn't matter what you leave beyond the new length

删除有序数组中重复的元素;返回新的长度;不允许新建额外的数组

解决思路
  • 设立2个游标:游标index用来遍历数组,游标newLen用来插入元素
  • 遍历数组,两两比较;如果不同,将index指向的元素复制到newLen指向位置;newLen与index各自右移
package com.rust.cal;

public class RemoveDuplicatesfromSortedArray {
    public static int removeDuplicates(int[] nums) { 
        if (nums.length <= 1) {  
            return nums.length;  
        }  
        int index = 1;
        int newLen = 1;  // return value
        while(index < nums.length){
            if (nums[index] != nums[index - 1]) {
                nums[newLen] = nums[index];  // insert element
                newLen++;
            }
            index++;
        }
        return newLen;
    }
    public static void main(String args[]){
        int[] input = {1,2,2,3,4,5,5,5,5,5,6,6,6,7,7,7,7,8};
        System.out.println("new lengh: " + removeDuplicates(input));
        for (int i = 0; i < input.length; i++) {
            System.out.print(input[i] + "  ");
        }
    }
}

输出:

new lengh: 8
1  2  3  4  5  6  7  8  5  5  6  6  6  7  7  7  7  8  
目录
相关文章
Leetcode Find Minimum in Rotated Sorted Array 题解
对一个有序数组翻转, 就是随机取前K个数,移动到数组的后面,然后让你找出最小的那个数,注意,K有可能是0,也就是没有翻转。
45 0
Search in Rotated Sorted Array - 循环有序数组查找问题
Search in Rotated Sorted Array - 循环有序数组查找问题
69 0
|
算法
LeetCode Find Minimum in Rotated Sorted Array II
假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。 请找出其中最小的元素。 注意数组中可能存在重复的元素。
84 0
LeetCode Find Minimum in Rotated Sorted Array II
LeetCode 153. Find Minimum in Rotated Sorted Array
假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。 请找出其中最小的元素。 你可以假设数组中不存在重复元素。
103 0
LeetCode 153. Find Minimum in Rotated Sorted Array
LeetCode 108. Convert Sorted Array to BST
给定一个数组,其中元素按升序排序,将其转换为高度平衡的BST。 对于这个问题,高度平衡的二叉树被定义为:二叉树中每个节点的两个子树的深度从不相差超过1。
74 0
LeetCode 108. Convert Sorted Array to BST
LeetCode 88. Merge Sorted Array
题意是给定了两个排好序的数组,让把这两个数组合并,不要使用额外的空间,把第二个数组放到第一个数组之中.
83 0
LeetCode 88. Merge Sorted Array
|
索引
LeetCode 81. Search in Rotated Sorted Array II
假设按升序排序的数组在事先未知的某个枢轴处旋转。 (例如, [0,0,1,2,2,5,6] 可能变成 [2,5,6,0,0,1,2]). 给定一个要搜索的目标值T, 如果该目标值能在数组中找到则返回true,否则返回false。
88 0
LeetCode 81. Search in Rotated Sorted Array II
LeetCode 80 Remove Duplicates from Sorted Array II
给定排序的数组nums,就地删除重复项,使重复项最多出现两次并返回新的长度. 不要为另一个数组分配额外的空间,必须通过使用O(1)复杂度的额外空间来修改输入数组,从而实现此目的.
66 0
LeetCode 80 Remove Duplicates from Sorted Array II
LeetCode 167 Two Sum II - Input array is sorted(输入已排序数组,求其中两个数的和等于给定的数)
给定一个有序数组和一个目标值 找出数组中两个成员,两者之和为目标值,并顺序输出
85 0
|
算法 Python
LeetCode 108. 将有序数组转换为二叉搜索树 Convert Sorted Array to Binary Search Tree
LeetCode 108. 将有序数组转换为二叉搜索树 Convert Sorted Array to Binary Search Tree