LeetCode笔记--数组(2)

Remove Duplicates from Sorted Array--easy

LeetCode笔记--数组(2)

给定一个排序好的数组,在原始数组中删除掉重复的元素,使得每个元素只出现一次,返回最终数组的长度。问题记录:

1.sorted!sorted!sorted!重要的事情说三遍!审题一定要认真,拿到题目忽略了这个条件,浪费了大部分时间在这上面。其实题目给的数组都是排序好的,也就是说,重复的元素都是在相邻位置上的,这样降低了难度。这也提供了一种思路:假如题目给的是乱序的,那么可以先进行排序操作来降低难度。

2.做这题的时候发现了关于for循环的重要知识(不知道理解的对不对),就是for循环的每次操作是在for语句之后进行的,也就是说,即使for in range()中的量已经改变,也是按最初的那个量去执行。如下图,因为随着循环进行,nums已经改变了长度,但是for语句中的nums仍然是最开始的长度,没有随之改变。这个原因导致之后的过程中i, j变量与新的len(nums)不匹配。

LeetCode笔记--数组(2)

3.最后仍然是参考别人的思路(汗颜),发现while语句和for不同,while语句中的变量会随着循环操作的改变而改变。以此题为例,nums在循环中长度变短,因此while语句的len(nums)也会随之变小,这样思路就非常清晰了。

LeetCode笔记--数组(2)