给定一个有序数组,删除重复内容,使每个元素只出现一次

给定一个有序数组,删除重复内容使每个元素只出现一次,并返回新的长度。

不要为其他数组分配额外的空间,您必须通过 O(1)额外的内存中就地修改输入数组来实现这一点

例:

给定nums = [1,1,2],

你的函数应该返回length = 2,前两个nums元素分别是1和2。
无论你离开新的长度,都没有关系。

这道题的思路就是采用两个标记点 number 和 i ,number记录不重复元素的位置,i从number的下一个开始遍历数组,如果i位置的数字等于number位置的数字,说明该数字重复出现,不予处理;如果i位置的数字不等于number位置的数字,说明该数字没有重复,需要放到l的下一位置,并使number加1。

AC代码如下

  1. public class leetcode26 {
  2. public static void main(String[] args) {
  3. leetcode26 lt = new leetcode26();
  4. int []num = { 0, 1, 1, 2, 2, 3, 3, 4};
  5. System.out.println(lt.removeDuplicates(num));
  6. }
  7. // 扔进去AC了他
  8. public int removeDuplicates(int[] nums) {
  9. if (nums.length == 0)
  10. return 0;
  11. //判断无输入
  12. int number = 0; //标记计数
  13. for ( int i= 0; i < nums.length ; i++) {
  14. if ( nums[i] != nums[number] ) {
  15. number++;
  16. nums[number] = nums[i];
  17. }
  18. }
  19. number+= 1; //标记+1即为数字个数
  20. return number;
  21. }
  22. }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值