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

文化传播集团网站建设网站优化seo培

文化传播集团网站建设,网站优化seo培,网站建设哪家好 上海,有哪些网站可以做推广包包给一个已经排好序的升序数组,其中每个元素都会重复2次,只有一个元素只有一个, 找出这个只有一个的元素。 要求时间复杂度在O(logn), 空间复杂度在O(1). 思路: 时间复杂度为O(logn), 让人想到了binary search. 因为时间复杂度为…

在这里插入图片描述

给一个已经排好序的升序数组,其中每个元素都会重复2次,只有一个元素只有一个,
找出这个只有一个的元素。
要求时间复杂度在O(logn), 空间复杂度在O(1).

思路:

时间复杂度为O(logn), 让人想到了binary search.

因为时间复杂度为O(1), 所以不能用一个数组来保存每个元素出现的次数。

不过,每个元素也就出现2次,而且是排好序的,也就是说相同的元素都是在一起的。
可以用一个cnt, 元素第一次出现时cnt = 1, 第2次出现时cnt = 0,
那么只出现一次的元素,cnt就无法清0,于是就被找出来了。
但是这种方法需要遍历数组,时间复杂度为O(n), 也能通过测试。

    public int singleNonDuplicate(int[] nums) {int cnt = 1;int n = nums.length;if(n == 1) return nums[0];for(int i = 1; i < n; i++) {if(nums[i] != nums[i-1]) {if(cnt == 1) return nums[i-1];else cnt = 1;} else {cnt = 0;}}return nums[n-1];}

下面看一下binary search.

为什么能用binary search呢?
因为每个元素出现2次(长度为偶数),只有一个元素出现了1次,
包含出现了1次的元素的部分,长度一定是奇数。

我们可以判断奇数的长度出现在左边还是右边,把left, right指针卡在奇数长度的部分。

举个例子:
2,2,3,3,4
[0] [1] [2] [3] [4]
left = 0, right = 4, mid = 2
右半边的长度(不含mid本身)为right - mid = 2, 长度为偶数,

但是发现没有,nums[mid]和nums[mid+1]两个数是一样的,
现在的长度right-mid 把两个相同的元素拆开了,违背了刚才判断的标准,
2个相同的元素都在一起才符合长度为偶数的标准,拆开了就不能按照长度为奇偶来判断了。

所以要比较nums[mid]和nums[mid+1]两个元素,如果相同,把nums[mid]也算进右边,
所以现在右边长度为奇数,可以判断单个的元素在右边,移动left = mid + 2(跳过重复元素)。
那如果是下面的例子:
1,2,2,3,3,
可以看到右边长度为偶数,这时要移动right = mid - 2(跳过重复元素)

直到nums[mid] 和 nums[mid + 1], nums[mid-1]都不相等, 返回nums[mid].

    public int singleNonDuplicate(int[] nums) {int n = nums.length;if(n == 1) return nums[0];int left = 0;int right = n - 1;while(left <= right) {int mid = left + (right - left)/2;boolean isEvenLen = ((right - mid) % 2 == 0);if(mid >= 1 && nums[mid] == nums[mid-1]) {if(isEvenLen) right = mid-2;else left = mid + 1;//重复元素算进右边长度} else if(mid < n - 1 && nums[mid] == nums[mid+1]) {if(isEvenLen) left = mid + 2; //算进重复元素后,右边长度为奇数,单个元素在右边else right = mid - 1;} else {return nums[mid];}}return -1;}
http://www.qdjiajiao.com/news/5497.html

相关文章:

  • 上海有色金属门户网站汕尾网站seo
  • 服装企业 北京 网站建设旺道seo网站优化大师
  • 11号在线 网站开发网站推广专家
  • 网站建站建设哪家好搜索关键词的软件
  • 网站建设 广州网站建设专业公司成都百度seo推广
  • 给人做网站的海南百度首页广告
  • flash网站全屏代码自助建站免费搭建个人网站
  • 公司网站制作 步骤如何规划企业网络推广方案
  • wordpress 在safari运动很慢广东seo推广公司
  • 网站为什么被挂马军事新闻今日最新消息
  • 深圳求做网站网络广告营销的典型案例
  • 建筑模板的规格seo独立站优化
  • 烟台做网站的公司上海关键词优化报价
  • html创建站点的步骤小广告多的网站
  • 西安做网站收费价格淄博seo
  • 丽水专业网站建设哪家好怎么优化整站
  • 做网站建设的销售怎么样怎么样在百度上推广自己的产品
  • 农村电商发展现状分析石家庄百度seo代理
  • 上海好的网站设计公司有哪些营销推广渠道有哪些
  • 建一个电商网站多少钱seo优化名词解释
  • 住房和城乡建设厅官网查询优化网哪个牌子好
  • 怎么做网站里面的模块南山网站seo
  • 自己开外销网站怎么做太原搜索排名提升
  • 58同城 网站建设 推广排名什么软件可以刷网站排名
  • 做网站公司实习日记可以免费发布广告的平台有哪些
  • 浅析网站域名在搜索引擎排名中的作用台州关键词首页优化
  • 为什么做金融网站犯法推广渠道有哪些平台
  • 手机模块网站太原网站建设制作
  • 做网站的费用记哪个科目百度搜索指数
  • 电子商务如何做网站销售竞价账户