寻找数组中的重复数字

数组中重复的数字

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;
全部评论

相关推荐

LemontreeN:有的兄弟有的我今天一天面了五场,4个二面一个hr面
投递字节跳动等公司9个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务