• [LeetCode] Find the Duplicate Number


     

    Given an array nums containing n + 1 integers where each integer is between 1 and n (inclusive), prove that at least one duplicate number must exist. Assume that there is only one duplicate number, find the duplicate one.

    Example 1:

    Input: [1,3,4,2,2]
    Output: 2
    

    Example 2:

    Input: [3,1,3,4,2]
    Output: 3

    Note:

    1. You must not modify the array (assume the array is read only).
    2. You must use only constant, O(1) extra space.
    3. Your runtime complexity should be less than O(n2).
    4. There is only one duplicate number in the array, but it could be repeated more than once.

    思路1使用map存储元素及其对应索引。

    class Solution {
    public:
        int findDuplicate(vector<int>& nums) {
            if (nums.empty())
                return 0;
            unordered_map<int, int> m;
            for (int i = 0; i < nums.size(); ++i)
            {
                if (m.count(nums[i]) > 0)
                    return nums[i];
                else
                    m[nums[i]] = i;
            }
        }
    };

     思路2:双层遍历找出相同元素

    class Solution {
    public:
        int findDuplicate(vector<int>& nums) {
            for (int i = 0; i < nums.size(); ++i)
            {
                for (int j = i+1; j < nums.size(); ++j)
                    if (nums[i] == nums[j])
                        return nums[i];
            }
        }
    };
  • 相关阅读:
    Kafka官方文档V2.7
    提交pr记录
    用Go语言来运行简单的hello world
    Mybatis学习记录-最简单的mybatis工程
    Flink CDC 实践记录
    CarbonDataDDL翻译003
    CarbonData使用案例
    CarbonData快速开始001
    如何构建数据仓库分层
    使用mybatis-plus的自动生成器生成代码
  • 原文地址:https://www.cnblogs.com/immjc/p/9144264.html
Copyright © 2020-2023  润新知