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

电商网站开发 数商云杰商网西安网站建设

电商网站开发 数商云,杰商网西安网站建设,建筑工程网站开发,健康网站可以做推广吗目录 题目我的解法解法 题目 给定一个包含 n 1 个整数的数组 nums ,其数字都在 [1, n] 范围内(包括 1 和 n),可知至少存在一个重复的整数。 假设 nums 只有 一个重复的整数 ,返回 这个重复的数 。 你设计的解决方案…

目录

  • 题目
  • 我的解法
  • 解法

题目

给定一个包含 n + 1 个整数的数组 nums ,其数字都在 [1, n] 范围内(包括 1 和 n),可知至少存在一个重复的整数。

假设 nums 只有 一个重复的整数 ,返回 这个重复的数 。

你设计的解决方案必须 不修改 数组 nums 且只用常量级 O(1) 的额外空间。

我的解法

class Solution {
public:int findDuplicate(vector<int>& nums) {sort(nums.begin(),nums.end());int l=0;int r=nums.size()-1;while(l<r){int mid=l+(r-l)/2;if(nums[mid]<nums[mid+1]){r=mid;}else if(nums[mid]=nums[mid+1]){l=mid+1;}}return nums[l];}
};

通过了44个用例,但是发现遇到问题就是
在这里插入图片描述
无法考虑排序后重复元素在最右边的情况,因为判断条件中间数不是重复的话,默认会往左边查找。
其实找到第一个最大的元素就可以了。有点像半个爬坡。找到第一个坡
不找峰顶

解法

class Solution {
public:int findDuplicate(vector<int>& nums) {int n = nums.size();int l = 1, r = n - 1, ans = -1;while (l <= r) {int mid = (l + r) >> 1;int cnt = 0;for (int i = 0; i < n; ++i) {cnt += nums[i] <= mid;}if (cnt <= mid) {l = mid + 1;} else {r = mid - 1;ans = mid;}}return ans;}
};

牛逼,以前一直以为二分查找只能查找排好序的数组,如果一个数组的统计性质具有单调递增,也能查找,长见识了。

http://www.yayakq.cn/news/546916/

相关文章:

  • 网站开发的重要性seo3立体构型
  • 购物型网站东莞网站推广渠道
  • 如何做网站的软件wordpress本地服务器
  • 网站开发语言介绍网站建设教程下载
  • 网上做二建题那个网站好2345浏览器电脑版
  • 网站怎么做成app制作app的软件手机版
  • 福州市晋安区建设局网站哈尔滨seo搜索优化
  • 企业网站源码vue深圳企业年报
  • 京东上怎样做网站vps 网站权限
  • 网站做淘宝客赚钱吗个人网站建设模板下载
  • 常州做网站公司有哪些网络营销渠道有哪几种
  • 软件手机站建行网银
  • 枣庄建设路小学网站科技的意义和价值
  • 做网站后端语言用什么搜狗推广停止了吗
  • 轻设计 让网站灵敏轻便的6个技巧设计公司取名大全最新版的
  • 钢材销售都在哪个网站做网页模板免费下载源代码
  • 网站的设计开发用群晖如何做公司网站
  • 怎么做彩票网站的代理网络营销推广体系
  • 网站建设资料动画设计招聘
  • 哪个网站可以学做咸菜村镇建设年度报表登录网站
  • 怎样做月嫂网站网络信息安全
  • 鹤山市网站建设公司东莞麻涌网站建设
  • 下载的网站模板怎么修改搜索指数
  • 福建住房和建设网站微网站 留言板
  • 建设银行mylove网站专业的网店交易平台
  • 移动端网站开发 float手机建设网站公司
  • 一流的山西网站建设合肥品牌seo
  • project 网站开发计划2017网站建设前景
  • 临沂购物网站建设aso推广
  • 查询域名注册网站mylife wordpress