自己的想法
首先想到的是类似于数字排序的冒泡排序方法,即:先将i与i+1位置的数据比较,如果相同,将i+1处数据放到i+2处:然后将i+1与i+2进行比较,如果相同放到下一个位置,以此类推。
然后仔细一想,不对啊。。。这样只能保证数组中所有相邻数字都不同,但是不能保证所有不同项都能在最前面。。。
看官方题解后
看了官方说明的文字描述,就感觉自己立马顿悟了。。。然后自己码了以下,也成功的写出来了,虽然说显然速度和内存占用都表现不好。
反思
问题一:审题不清,题上说明了处最前端按要求排列元素之后的所有元素都可任意变。而我总是在想将前面找到的元素还要对应的放到后面去。
问题二:对指针的应用不熟练,甚至开始的时候就没有往这边想。还是要加强编程的联系,然后认真看看算法书,还没仔细看过。。。
下面是自己写的代码:
class Solution:
def removeDuplicates(self, nums) :
k = 1
i = 0
if len(nums) < 2:
return len(nums)
while i<len(nums):
j = i+1
while j<len(nums):
if nums[i] == nums[j]:
j += 1
else:
break
if j < len(nums):
nums[k] = nums[j]
k += 1
i = j
else:
break
return k