本文主要是介绍leetcode解题方案--026--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.
分析
去除数组中重复元素,并返回新数组的长度
public static int removeDuplicates(int[] nums) {int xx = Integer.MIN_VALUE;int ans = 0;int current = 0;for (int i = 0; i < nums.length; i++) {if (nums[i] > xx) {ans++;xx = nums[i];nums[current++] = nums[i];}}return ans;}
这个方法有一个问题,就是在把初始值设为Integer.MIN_VALUE并不保险。
最好的方法还是,比较后一个和前一个是否相同,这样就需要判断数组长度为1的情况
int removeDuplicates(int A[], int n) {if(n < 2) return n;int id = 1;for(int i = 1; i < n; ++i) if(A[i] != A[i-1]) A[id++] = A[i];return id;}
这篇关于leetcode解题方案--026--Remove Duplicates from Sorted Array的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!