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

南阳网站运营淘宝网首页官网电脑版

南阳网站运营,淘宝网首页官网电脑版,英语门户网站织梦源码,wordpress首页加广告目录 题目我的解法解法 题目 给定一个包含 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.yingshimen.cn/news/789/

相关文章:

  • 如何查看网站点击量建设项目验收网站
  • 查看网站流量重庆做网站好的公司
  • 重庆律师网站建设wordpress缩进
  • 手机网站关键词seo化肥网站模板
  • 在哪买网站空间网店美工毕业设计论文
  • 手机社交网站建设asp网站的安全性
  • 做网站网课wordpress 网站上传
  • 青岛网站建设最便宜建查查官网
  • 做网站需要每年都交钱吗流量平台当建价值高地
  • vue做pc网站公司做企业网站的哪家好
  • 网站设计兼容模式用什么软件制作图片
  • 摄影工作室网站建设模板南阳网站建设新闻
  • 佛山网站建设的公司品牌建设策略论文
  • 外贸推广建站软件开发好学吗
  • 大企业网站建设方案淄博想建网站
  • 岳池网站建设建设网站教程视频视频视频
  • 网站网页是怎么做的做网站的产品图片
  • 开源企业网站建设系统最全的数据网站
  • 网站设计服务商微信定制开发 网站开发
  • 美丽定制 网站模板深圳燃气公司有哪几家
  • 公司网站开发费用济南兴田德润o简介图片拖拽式在线网页制作工具
  • 图片模板网站免费知识库管理系统
  • 布吉网站建设哪家好建个注册页面网站
  • 揭阳商城网站建设免费网页游戏poki
  • 网站的建设步骤网站审批需要什么手续
  • 网站开发合同甲方的权利成都企业网站网络营销
  • 网站内容编辑工具wordpress主题2019
  • 网站建设艾瑞市场分析网站首页的图标是怎么做的
  • 济宁贵网站建设北京建设银行官网招聘网站
  • 哪里可以做虚拟货币网站ps软件下载电脑版教程