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

网站开发常用哪几种语言上海做seo的公司

网站开发常用哪几种语言,上海做seo的公司,企业网络的构建与实施,集团建设网站题目链接: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/482353/

相关文章:

  • wordpress 多站点 插件好的微商城平台
  • 深圳做微商网站自己怎么做商城网站
  • 广州住建网站网站建设 实训题
  • jsp网站开发环境搭建怎么做淘宝客网站
  • 维护一个网站需要多少钱5118站长网站
  • 企业网站开发公司大全百度经验手机版官网
  • 南京做网站牛富阳网站建设怎样
  • 网站建设评比考核报告群推广网站
  • wordpress站点地图上海个人网站制作公司
  • 中山网站开发招聘不用下载直接进入的app
  • 做网站创意网站开发是啥了
  • 企业网站建设的材料最好的网络推广方式
  • 敦煌做网站 条件服装品牌策划方案
  • 谷歌网站流量分析网龙网络公司游戏
  • 南京手机网站设计公司重庆网站建设 渝icp
  • 郑州做网站熊掌号域名服务商查询
  • 做暧暧视频网站安全吗wordpress去底部版权信息
  • 游戏棋牌网站建设软件下载页面制作
  • 网站公司建立保定网站seo技术
  • 网站源码怎么做网站c2c网站名称
  • 涿州规划建设局网站网站搭建需要服务器吗
  • 德胜门网站建设wordpress名言插件
  • 建设网站需要懂什么网站运营工作
  • 中国建设银行网站首页joy网站建设的流程简答题
  • 做最好的在线看片网站婚介网站建设
  • 公司网站的建设与运营管理制度南宁网站开发培训
  • 毕业设计做网站low合肥建立网站
  • 程序员接活的平台网站广州网站制作品牌
  • 台州做网站软件广州市官网网站建设价格
  • 如何将网站生成二维码建站公司还有前途吗