寻找数组中的重复数字

数组中重复的数字

http://www.nowcoder.com/questionTerminal/623a5ac0ea5b4e5f95552655361ae0a8

  • 长度为n,范围为0~n-1,若无重复数字,且按序排列,则必有value=index;若存在重复数字时,当一个数字占据index,则重复元素必然会产生冲突
  • 遍历数组
  • 如果vlaue!=index 说明value没有在正确的位置上,应将其交换到正确的位置上
  • 如果value == arr[value], 说明该位置上已存在value,该元素为重复元素,结束返回true
while (index < n)
{
    if (arr[index] != index && arr[index] == arr[arr[index]])
        return true;
    else
    {
        /* 当arr[index] == index时不需要交换 */
        swap(arr[index], arr[arr[index]]);
    }
    ++index;
}
return false;
全部评论

相关推荐

totoroyyw:千年老妖😂
投递华为等公司10个岗位
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务