首页 > 编程语言 > 详细

求数组里重复出现的数字

时间:2017-02-26 20:52:55      阅读:215      评论:0      收藏:0      [点我收藏+]

https://leetcode.com/problems/find-the-duplicate-number/?tab=Description

 

没想到的是,居然重复复用了链表环形追逐的思路。非常的巧妙。而且不需要修改数组里面的数字,不需要修改原数组。

 

https://discuss.leetcode.com/topic/25913/my-easy-understood-solution-with-o-n-time-and-o-1-space-without-modifying-the-array-with-clear-explanation/2

 

int findDuplicate3(vector<int>& nums)
{
    if (nums.size() > 1)
    {
        int slow = nums[0];
        int fast = nums[nums[0]];
        while (slow != fast)
        {
            slow = nums[slow];
            fast = nums[nums[fast]];
        }

        fast = 0;
        while (fast != slow)
        {
            fast = nums[fast];
            slow = nums[slow];
        }
        return slow;
    }
    return -1;
}

 

求数组里重复出现的数字

原文:http://www.cnblogs.com/charlesblc/p/6445526.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!