DreamArk MSIT-SE Student in CMU

LeetCode 26 Remove Duplicates from Sorted Array

2016-12-17
氯甲烷

LeetCode 26 Remove Duplicates from Sorted Array

26 Remove Duplicates from Sorted Array

重复思想解法

这道题是#27 Remove Elements的姊妹题

# @param {Integer[]} nums
# @return {Integer}
def remove_duplicates(nums)
  return 0 if nums.size == 0
  cur = 0
  i = 0
  val = nums[i]
  while cur < nums.size do 
    cur_val = nums[cur]
    if cur_val == val then
      cur += 1
      next
    else
      val = cur_val
      i += 1
      nums[i] = cur_val
    end
  end
  return (i+1)
end

这个解法的思想是和Remove Elments差不多,只是这里面的delete item在变,而且也不是交换末尾的元素而是前方不重复元素

和#27一样的最快解法,用了127ms…这有点慢啊,看看有没有别的解法

leetCode参考答案

public int removeDuplicates(int[] nums) {
    if (nums.length == 0) return 0;
    int i = 0;
    for (int j = 1; j < nums.length; j++) {
        if (nums[j] != nums[i]) {
            i++;
            nums[i] = nums[j];
        }
    }
    return i + 1;
}

Final

似乎没啥区别…主要是Ruby太慢了,代码结构以后再改


Similar Posts

Comments