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

代码随想录训练营Day56

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、搜索插入位置
  • 二、在排序数组中查找元素的第一个和最后一个位置


前言

提示:这里可以添加本文要记录的大概内容:

今天是跟着代码随想录刷题的第56天,主要是复习了数组的内容,复习了数组的定义和二分法,做了一些二分法的扩展题目


提示:以下是本篇文章正文内容,下面案例可供参考

一、搜索插入位置

思路:这道题就是用二分法,具体应该返回哪个值,可以举个例子查看,在代码里面用的左开右闭还是左闭右开这个主要看后面right=middle还是middle-1,如果是左开右闭,就只能middle-1,因为最右边那个是闭的,所以不可能包括这个值,就要变成middle-1
代码:

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

代码如下(示例):

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
import  ssl
ssl._create_default_https_context = ssl._create_unverified_context

二、在排序数组中查找元素的第一个和最后一个位置

思路:就是分查找元素位置的左边界和有边界,写两个函数一个求左边界一个求有边界
代码:

class Solution {int getRightBorder(vector<int>& nums, int target) {int left=0;int right=nums.size()-1;int result;while(left<=right){int middle=(left+right)/2;if(nums[middle]>target){right=middle-1;}else if(nums[middle]==target){while(middle<=nums.size()-1&&nums[middle]==target){result=middle;middle++;}return result;}else{left=middle+1;}}return -1;}int getleftBorder(vector<int>& nums, int target) {int left=0;int right=nums.size()-1;int result;while(left<=right){int middle=(left+right)/2;if(nums[middle]>target){right=middle-1;}else if(nums[middle]==target){while(middle>=0&&nums[middle]==target){result=middle;middle--;}return result;}else{left=middle+1;}}return -1;}
public:vector<int> searchRange(vector<int>& nums, int target) {vector<int> result1;int a=getleftBorder(nums,target);int b=getRightBorder(nums,target);result1.push_back(a);result1.push_back(b);return result1;}
};

http://www.lryc.cn/news/392144.html

相关文章:

  • S32K3 工具篇4:如何在S32DS中使用lauterbach下载
  • 深度神经网络语言识别
  • STM32自己从零开始实操07:电机电路原理图
  • 网页计算器的实现
  • JAVA设计模式-监听者模式
  • anaconda命令大全
  • “论单元测试方法及应用”写作框架,软考高级论文,系统架构设计师论文
  • 基于布雷格曼偏差校正技术的全变分一维时间序列信号降噪方法(MATLAB R2018A)
  • 【CentOS 7.6】Linux版本 portainer本地镜像导入docker安装配置教程,不需要魔法拉取!(找不着镜像的来看我)
  • 【windows|012】光猫、路由器、交换机详解
  • Node之Web服务
  • [Day 24] 區塊鏈與人工智能的聯動應用:理論、技術與實踐
  • 计算机图形学入门25:BRDF的测量
  • 空调计费系统是什么,你知道吗
  • 震惊!张宇25版高数18讲发布,656页惹争议!
  • React+TS前台项目实战(二十三)-- 基于属性自定义数值显示组件Decimal封装
  • pip install包出现哈希错误解决
  • 多线程压测方法模板
  • Uniapp软件库全新带勋章功能(包含前后端源码)
  • 秋招突击——7/5——设计模式知识点补充——适配器模式、代理模式和装饰器模式
  • bmob Harmony鸿蒙快速开发搜索功能
  • 软通动力子公司鸿湖万联最新成果SwanLink AI亮相世界人工智能大会
  • 查看Linux系统中日志文件
  • 技术干货|如何轻松完成空调管路的随机振动分析以及疲劳寿命预测
  • 中英双语介绍中国的城市:上海市(Shanghai)
  • 代码随想录算法训练营第75天:总结篇[1]
  • 眼动追踪技术 | 眼动的分类和模型
  • 如何使用PHP根据输入文字动态调整图片尺寸?
  • 3.js - hdr贴图 是什么,有什么用
  • Nature Communications|用于电子皮肤的自主自愈晶体管(柔性半导体器件/电子皮肤/柔性电子)