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

专题三0~n-1中缺失的数字

1.题目

给一个数组,单调性是递增的,需要找到缺失的数字,加上这个数字就变为等差数组了。

2.算法原理

这里用二分来解决,而二段性是根据下标区分,临界值前的数字于下标相对应,临界值后的于下标相差1,就可以以此为判断基准进行二分查找,等于的情况是在下标不相等的区域,所以nums[mid]!=mid就把right=mid,left就是mid+1,也可以得到mid的确定公式有没有+1,避免死循环。最后还有一种情况,就是数组是等差的,不过少了最后一位,如[0,1,2,3]少了4,则left和right就会在3停下,就需要判断如果下标和值相等就说明是在后一位,就需要+1。

3.代码实现

class Solution
{
public:
	int missingNumber(vector<int>& nums)
	{
		int left = 0, right = nums.size() - 1;
		while (left < right)
		{
			int mid = left + (right - left + 1) / 2;
			if (nums[mid] == mid) left = mid + 1;
			else right = mid;
		}

		return nums[left] == left ? left + 1 : left;
	}
};

相关文章:

  • 6.PE文件新增节
  • Linux进程1.0--task_struct
  • 分支与循环(上)
  • OpenCV基础【图像和视频的加载与显示】
  • 超声重建,3D重建 超声三维重建,三维可视化平台 UR 3D Reconstruction
  • 链表·简单归并
  • 基于SpringBoot+Vue的毕业论文管理系统+LW示例参考
  • Vue:Vue+TS学习笔记
  • Linux第三次练习
  • 【后端】【django】【related_name】`related_name` 的作用
  • 召回度、准确度
  • Java基础面经
  • PyTorch 深度学习实战(14):Deep Deterministic Policy Gradient (DDPG) 算法
  • 【推荐项目】052-用水监控管理系统
  • 【Godot】Window类
  • 【SpringMVC】常用注解:@CookieValue
  • 股票查询系统
  • C#生产型企业ERP系统管理软件PCB行业ERP进销存MRP管理系统BOM管理
  • python---序列 (str,list,tuple)
  • RBAC 模型的简单实现
  • A股三大股指集体高开
  • 普京提议恢复直接谈判,泽连斯基:望俄明日停火,乌愿谈判
  • 中国社科院:网文市场超430亿元,作者破3000万人
  • 巴基斯坦称成功拦截印度导弹,空军所有资产安全
  • 视频丨习近平同普京在主观礼台出席红场阅兵式
  • 上海杨浦:优秀“博主”购房最高可获200万补贴