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

巅峰网站建设网络怎么设计

巅峰网站建设,网络怎么设计,网站运营分析报告,wordpress顶部广告题目链接:LCR 070. 有序数组中的单一元素 - 力扣(LeetCode) 题目: 在一个排序的数组中,除一个数字只出现一次之外,其他数字都出现了两次,请找出这个唯一只出现一次的数字。例如,在…

题目链接:LCR 070. 有序数组中的单一元素 - 力扣(LeetCode)

题目

在一个排序的数组中,除一个数字只出现一次之外,其他数字都出现了两次,请找出这个唯一只出现一次的数字。例如,在数组 [1, 1, 2, 2, 3, 4, 4, 5, 5] 中,数字 3 只出现了一次。

分析

如果将题目的条件稍稍改动,输入的数组没有经过排序,其他条件不变,那么这就是另一类很经典的面试题。由于两个相同的数字异或的结果是 0,因此如果将数组中所有数字异或,最终的结果就是那个唯一只出现一次的数字。我们需要计算数组中所有数字的异或,如果数组的长度为 n,那么这种解法的时间复杂度是 O(n)。

现在题目增加了一个条件,输入的数组是排序的,前面基于异或的解法仍然有效。但是面试官增加一个条件,可能是希望应聘者能够想出新的更好的解法。既然是在排序数组中查找某个数字,就尝试应用二分查找算法。

由于只出现一次的数字的左边有偶数个数字,因此它的下标 x 一定是偶数(下标从 0 开始),可以在偶数下标范围内二分查找。二分查找的目标是找到第一个 nums[x] nums[x + 1] 的偶数下标

可以将数组中的数字每两个分成一组,最初的若干组的两个数字都是相同的。但遇到只出现一次的数字之后,情况发生变化。这个只出现一次的数字和后面的数字结合成一组,导致后面所有组的两个数字都不相同。由此可见,只出现一次的数字正好是第一个两个数字不相同的分组的第 1 个数字

初始化,二分查找的左边界是 0,右边界是数组的最大偶数下标,即数组的长度减 1(因为数组的长度是奇数)。每次取左右边界的平均值 mid 作为判断的下标,如果 mid 是奇数,则将 mid 减 1,确保 mid 是偶数,然后比较 nums[mid] 和 nums[mid + 1] 是否相等,如果相等,则 mid < x,调整左边界;否则 mid >= x,调整有边界。调整边界之后继续二分查找,直到确定下标 x 的值

代码实现

class Solution {
public:int singleNonDuplicate(vector<int>& nums) {int left = 0;int right = nums.size() - 1;while (left < right){int mid = (left + right) / 2;if (mid % 2 != 0)--mid;if (nums[mid] == nums[mid + 1])left = mid + 2;elseright = mid;}return nums[left];}
};
http://www.yayakq.cn/news/382760/

相关文章:

  • 做贸易把产品放到哪个网站好呢mvc5 网站开发
  • 东坑镇做网站南宁网络企业网站
  • 前端做网站需要wordpress catchy
  • 网站备案号注销的结果企业邮箱登录入口手机网页版
  • 做警员编号网站智能家居
  • 十堰网站制作公司上饶网站建设srsem
  • 做文学类网站后期花费网站备案信息代码在哪里找
  • 动漫网站建设毕业设计微信网站 手机网站
  • 国内响应式网站模板怎么更改网站名称
  • 金诚财富网站是谁做的wordpress首页调用文章
  • 酒店网站案例千万别学工业设计
  • 制作可以赚钱的网站田阳县建设局网站
  • 更改网站名字展示类网站开发费用
  • 怎么选择丹徒网站建设自己建网站 怎么做后台
  • 宿州北京网站建设做十来个网站优化
  • 商业网站开发实训内容深圳app网站建设陈俊兵
  • 手机网站开发ios怎么能让我的网站被百度收录
  • 做网站北京wordpress 小视频模板
  • 教育集团网站设计策划书wordpress大学用户中心
  • 广州设计网站避免视觉效果混淆。
  • 四川专业网站建设费用更换网站备案
  • 企业彩铃网站源码做图片的软件带字图片免费
  • 个人网站域名名字html5网站代理
  • 阿里云上可以做网站吗源代码网站怎么建设
  • 招聘网站开发需求wordpress 图片服务器
  • 大连企业需要做网站沈阳网站制作策划
  • 郑州网站运营营销型网站建设设计6
  • 建设一个微商的网站新型网络平台代理加盟
  • 网站的运作方式南昌seo网站
  • 龙岗公司做网站自助建站系统平台