---恢复内容开始---
一直没有系统地学习过算法,不过算法确实是需要系统学习的。大二上学期,在导师的建议下开始学习数据结构,零零散散的一学期,有了链表、栈、队列、树、图等的概念。又看了下那几个经典的算法——贪心算法、分治算法、动态规划以及回溯算法。不过,都是知其一不知其二的一知半解。到最后,发现学到了一堆的一知半解,在学校课程开这门课时,却又是不得不再学一遍。学一样东西,又不全心全意地主动去把它学好,到最后只是花费了时间,却没真真学到东西。所以,不求学识有多广,但求所学的都精。
一个偶然的机会,让我在网上找到了一本社区制作的LeetCode OJ的题解。看到这上面的题目,以及解法,真的是不得不叫好啊!这么巧妙的解决方法。今天看的题目都是数组问题的题目,且看题目:
2.1.1 Remove Duplicates from Sorted Array
描述:
Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length.
Do not allocate extra space for another array, you must do this in place with constant memory.
For example, Given input array A = [1, 1, 2],
Your function should return length = 2, and A is now [1, 2].
代码:
class Solution { public: int removeDuplicates(int A[], int n) { if (n == 0) return 0; int index = 0; for (int i = 1; i < n; i++) { if (A[index] != A[i]) A[++index] = A[i]; } return index + 1; } };
时间: 2024-10-05 20:52:35