Leetcode:从排序数组中删除重复项

时间:2018-08-09 20:08:39

标签: java

为什么Leetcode编译器不接受此代码? 我的程序在netbeans中运行。但是leetcode编译器不接受它。

这是我的代码:

import  java.util.Arrays;


public class RemoveDuplicateFromArray {

public static int[] removeDuplicates(int[] nums) {

    int temp, count = 0 ,l = 0;
    temp = nums[0];

  for(int i = 1; i < nums.length - (1 + l); i++ ) {

      if(temp == nums[i]) {
          count = count + 1;

          for(int j = i; j < nums.length - count; j++){
              nums[j] = nums[j+1];
            }

          i = i - 1;

      } else {
          temp = nums[i];
          i = i ;

      }
       l = count;
  }

      nums = Arrays.copyOfRange(nums, 0, nums.length-count);

      if(nums.length == 2){
      if(nums[0] == nums[1]){
          nums = Arrays.copyOfRange(nums, 0, nums.length-1);
      }
  } 

    return  nums;
}

这是我的主要方法:

public static void main(String[] args) {

    int[] nums = new int[] {1,1,1}; // showing error here.
    System.err.println("nums lenght: " +nums.length);

    int new_nums[] = removeDuplicates(nums);

   for(int i : new_nums) {
        System.err.print(i + " ");
}

}

}

错误是:

  

不兼容的类型:int []无法转换为int。

2 个答案:

答案 0 :(得分:2)

我希望leetcode在此行上遇到问题:

int new_nums[] = removeDuplicates(nums);

这不是定义整数数组的典型方法(这是C样式)。 Java确实支持语法,但是有点不可思议。参见this answer for more detail

尝试以下方法:

int[] new_nums = removeDuplicates(nums);

仅在LeetCode上尝试过,似乎可以工作: OP's code running on LeetCode

答案 1 :(得分:0)

我本人会这样做:

import java.util.ArrayList;
import java.util.List;

public class Main {
    public static void main(String[] args) {

        int[] nums = new int[]{1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 5, 6, 7, 7, 7, 8, 9, 0, 0, 0, 0}; 
        System.out.println("nums lenght: " + nums.length);

        int[] new_nums = removeDuplicates(nums);

        for (int i : new_nums) {
            System.out.print(i + " ");
        }

    }
    public static int[] removeDuplicates(int[] nums) {
        List<Integer> found = new ArrayList();
        for (int i = 1; i < nums.length; i++) {
            if (!found.contains(nums[i])) {
                found.add(nums[i]);
            }
        }
        int[] ret = new int[found.size()];
        for(int i = 0; i < found.size(); i++){
            ret[i] = found.get(i);
        }
        return ret;
    }
}