博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LeetCode] Find the Duplicate Number
阅读量:6319 次
发布时间:2019-06-22

本文共 1131 字,大约阅读时间需要 3 分钟。

Problem

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.

Note:

You must not modify the array (assume the array is read only).

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

Solution

class Solution {    public int findDuplicate(int[] nums) {        int start = 0, end = nums.length-1;        while (start <= end) {            int mid = start + (end-start)/2;            if (count(nums, mid) <= mid) {                start = mid+1; //numbers no larger than mid <= mid, so mid is safe, search second half            } else end = mid-1; //numbers less than mid > mid, so there is duplicate in first half        }        return start; //when start > end,     }    private int count(int[] nums, int k) {        int count = 0;        for (int num: nums) {            if (num <= k) count++;        }        return count;    }}

转载地址:http://gyuaa.baihongyu.com/

你可能感兴趣的文章
EntityFramework之原始查询如何查询未映射的值,你又知道多少?
查看>>
target_list 中的 list_make1 的含义
查看>>
PLSQL DBMS_DDL.ALTER_COMPILE
查看>>
法线贴图是用来解决低模的细节表现问题
查看>>
Adobe AIR中使用Flex连接Sqlite数据库(2)(添加,删除,修改以及语句参数)
查看>>
eclipse加入git工具
查看>>
6.4. ruby
查看>>
BZOJ 1411&&Vijos 1544 : [ZJOI2009]硬币游戏【递推,快速幂】
查看>>
jsp中如何整合CKEditor+CKFinder实现文件上传
查看>>
前后台交互经常使用的技术汇总(后台:Java技术,前台:Js或者Jquery)
查看>>
Gartner::未来五年有颠覆性的IT技术都在这里
查看>>
《Android程序设计》一3.3 其他Android组件
查看>>
随机机器学习算法需要试验多少次,才足以客观有效的反映模型性能?
查看>>
大数据风控时代下好车贷等互联网金融平台有哪些特点
查看>>
如何用深度学习推荐电影?教你做自己的推荐系统!
查看>>
英特尔澄清:第一款10nm产品2017年定发布
查看>>
《Android智能穿戴设备开发指南》——第6章,第6.2节使用TCP协议传输数据
查看>>
《Ansible权威指南》一2.7 本章小结
查看>>
一些重要 Docker 命令的简单介绍
查看>>
微服务,微架构[六]之springboot集成mybatis
查看>>