双指针 06

LeetCode 80

原题链接

HashMap

public int removeDuplicates(int[] nums) {
    Map<Integer, Integer> map = new HashMap<Integer, Integer>();
    int i = 0;
    for (int num : nums) {
        int count = (int) map.getOrDefault(num, 0) + 1;
        map.put(num, count);
        if (count <= 2) {
            nums[i++] = num;
        }
    }
    return i;
}

双指针

  • 用了官方的思路
官方思路
class Solution {
    public int removeDuplicates(int[] nums) {
        int n = nums.length;
        if (n <= 2) {
            return n;
        }
        int slow = 2, fast = 2;
        while (fast < n) {
            if (nums[slow - 2] != nums[fast]) {
                nums[slow] = nums[fast];
                ++slow;
            }
            ++fast;
        }
        return slow;
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

推荐阅读更多精彩内容