当前位置: 首页 > news >正文

做网站需要哪个系统网络推广方式方法

做网站需要哪个系统,网络推广方式方法,门户网站开发用什么框架好,建设网站主机免费的怎么下载【前言】本文以及之后的一些题解都会陆续整理到目录中,若想了解全部题解整理,请看这里: 第0006页 寻找重复数 今天想讨论的一道题在 LeetCode 上评论也是颇为“不错”。有一说一,是道好题,不过我们还是得先理解了它才…

【前言】本文以及之后的一些题解都会陆续整理到目录中,若想了解全部题解整理,请看这里:

第0006页 · 寻找重复数

        今天想讨论的一道题在 LeetCode 上评论也是颇为“不错”。有一说一,是道好题,不过我们还是得先理解了它才算真正的好题。这里我们展示一种使用二进制的做法,希望能帮到你哟!

【寻找重复数】给定一个包含 n + 1 个整数的数组 nums ,其数字都在 [1, n] 范围内(包括 1 和 n),可知至少存在一个重复的整数。现在假设 nums 只有一个重复的整数,请返回这个重复的数。要求:你设计的解决方案必须不修改数组 nums 且只用常量级 O(1)的额外空间。

示例1示例2示例3
输入:nums = [1, 3, 4, 2, 2]输入:nums = [3, 1, 3, 4, 2]输入:nums = [3, 3, 3, 3, 3]
输出:2输出:3输出:3

【解题分析】这道题目最难的地方莫过于它的要求:只能使用常量级的额外空间!既然不能用一般的方法,我们便另辟蹊径,对所有数 [1, n] 进行二进制展开,举个例子如下表所示:

13422xy
第 0 位11

0

0022
第 1 位0101132
第 2 位0010011

        对于第 i 位,我们用 x 记录 nums 中所有数满足二进制形式下第 i 位是 1 的数量有多少。用 y 记录 1 ~ n 中所有数在二进制形式下第 i 位是 1 的数量应该有多少。

        比如说,上表中第 0 位,nums 中的数有 2 个的二进制形式该位为 1,而 1 ~ 4 中该位为 1 的数有 2 个。 

        那么怎么找出重复的数呢?假设重复的数是 k,那么,对于 k 二进制展开后所有为 1 的数位必定会导致 x > y

        但是这个结论我们还是需要证明一下的。

【证明】

        如果 nums 数组中 target 出现了 2 次,其余的数各出现了 1 次,那么如果 target 的第 i 位为 1,那么 nums 数组的第 i 位 1 的个数 x 恰好比 y 大了 1。如果 target 的第 i 位为 0,那么 x = y。

        如果 nums 数组中 target 出现了 3 次及以上,那么必然有一些数不在 nums 数组中。这个时候就相当于我们用 target 替换了这些数,我们要考虑的就是这样的替换对 x 会产生什么影响:       

        1、如果被替换的数第 i 位为 1,且 target 第 i 位为 1:x 不变,满足 x>y。
        2、如果被替换的数第 i 位为 0,且 target 第 i 位为 1:x 加一,满足 x>y。
        3、如果被替换的数第 i 位为 1,且 target 第 i 位为 0:x 减一,满足 x≤y。
        4、如果被替换的数第 i 位为 0,且 target 第 i 位为 0:x 不变,满足 x≤y。

        总而言之,在替换后,如果 target 的第 i 位为 1,那么始终满足 x > y;如果为 0,那么每次替换后始终满足 x ≤ y。因此,接下来我们只需要按照位次复原这个数就可以了。

 

【源码展示】

class Solution {
public:int findDuplicate(vector<int>& nums) {int n = nums.size(), ans = 0;// 确定二进制下最高位是多少int bit_max = 31;while (!((n - 1) >> bit_max)) {bit_max -= 1;}for (int bit = 0; bit <= bit_max; bit++) {int x = 0, y = 0;for (int i = 0; i < n; ++i) {if (nums[i] & (1 << bit)) {x += 1;}if (i >= 1 && (i & (1 << bit))) {y += 1;}}if (x > y) {ans |= 1 << bit;}}return ans;}
};
http://www.yayakq.cn/news/862605/

相关文章:

  • 平台网站做等级保护测评网站新闻专题怎么做
  • 城乡建设部统计信息网站在网上做翻译的网站
  • 公司网站建设的作用与意义wordpress登录按钮设置密码
  • 做网站用什么软件最好google浏览器官网下载
  • 上海网站建设技术托管不良网站举报中心官网
  • 福建宁德建设局网站女孩学建筑学好找工作吗
  • 网站优化怎么做 有什么技巧wordpress设置网址导航
  • 网站建设企业网的项目描述网站换空间 site
  • 南京江宁网站制作公司创建网站的步骤
  • 专门做会议的网站如何搭建静态网站源码
  • 网站建设江门 优荐做ktv网站大概多少钱
  • 东莞网站关键字中文电子商务网站模板
  • 网站出现转站怎么办中国500强排名完整版
  • 广州做创客教室的厂家网站做网站的公司挣钱吗
  • 国产做的视频网站h5商城网站是什么
  • 帝国cms怎么做网站网站建设安全措施
  • win2008 r2 搭建网站删除中文wordpress
  • php网站模板制作软件wordpress打开文章
  • 凡科免费个人做网站有弊吗网站设计公司 深圳龙华
  • 淘宝客网站开发视频新网域名注册续费
  • 互联网创业就是做网站吗thinkphp只能做网站
  • 梵克雅宝官网编号查询惠州百度seo
  • 上海行业门户网站建设技术怎么利用云盘建设网站
  • 怎么学习建设网站下面有关网络营销特点的论述正确的有
  • 辽宁省住房和城乡建设部网站主页wordpress博客文章美化
  • 虚拟主机wordpress安装济南关键词优化平台
  • 怎么上传网站源码cp网站建设
  • dhl做单网站不用下载微信在线登录
  • 可以做翻译兼职的网站通过apache建设网站
  • 百度站长平台网址网页制作方案策划