放松了这么多天,终于把博客重新捡起来了,以后保持每天3更,加油加油!
这次实现的算法是删除一个有序数组里面的重复元素
思路:一个数组是有序的,所以算法实现起来相对比较简单,因为只需比较数组相邻的两个数字即可,存在两种情况
1:如果数组里面不存在元素或者只存在一个元素,那么就不需要进行比较,直接返回数组的长度即可;
2:数组长度大于一的话那么就需要比较数组的相邻的两个元素,如果相等 的话那么后一个元素的指针往后移一位,然后前一个元素的指针接着往后移一位,将当前后一个元素指针所指的数字赋给前一个元素指针所指的位置,然后后一元素指针继续加一。如果相邻俩个元素不等的话,则直接前一元素指针加一与后一元素重合,然后后一元素指针继续加一。
代码如下:
public class Solution {
public int removeDuplicates(int[] A) {
int i=0;
int j=1;
if(A.length==0||A.length==1){
return A.length;
}
while(i<A.length&&j<A.length){
if(A[i]==A[j]){
j++;
}else{
A[++i]=A[j++];
}
}
return i+1;
}
}