题目:(https://leetcode.com/problems/remove-element/description/#)
Given an array and a value, remove all instances of that value in-place and return the new length.
Do not allocate extra space for another array, you must do this by modifying the input array in-place with O(1) extra memory.
The order of elements can be changed. It doesn't matter what you leave beyond the new length.
举例:
1,2,3,1,4 1 ---> 2,3,4
2,4,4,2 3 ---> 4,4
思路:
和Remove Duplicates from Sorted Array的思路几乎是一样的。点击打开链接
代码:
public class Remove_Duplicates_from_Sorted_Array {
public static int removeDuplicates(int[] nums)
{
int len = nums.length;
if(len == 0 || len == 1) return len;
int length = 1;
for(int i = 1;i < len;i++)
{
if(nums[i] != nums[i - 1])
nums[length++] = nums[i];
}
System.out.println(length);
return length;
}
public static void main(String[] args)
{
int[] nums = {1,1,1,1,1,1,1,2,2,3,3,4,4,4,4,4,5,6};
int length = removeDuplicates(nums);
for(int i = 0;i < length;i++)
{
System.out.println(nums[i]);
}
}
}
时间复杂度:
O(n)。
空间复杂度:
O(1)。