当前位置: 首页 > 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;}
};

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 使用Java实现分布式日志系统
  • pip install包出现哈希错误解决
  • 为什么https比http更安全
  • 3101. 交替子数组计数 Medium
  • thinkadmin点击菜单跳转内容编辑页面(省略列表页)
  • qt qmake 和 cmake啥区别
  • npm,yarn清楚缓存
  • 【PYG】简单分析Planetoid()中存储Cora数据集边的数量
  • Arthas实战(5)- 项目性能调优
  • 专业课笔记——(第十二章:文件的读写)
  • ffmpeg使用bmp编码器把bgr24编码为bmp图像
  • 【Leetcode笔记】406.根据身高重建队列
  • [课程][原创]opencv图像在C#与C++之间交互传递
  • Python内置函数print()详解
  • 【python】PyQt5可视化开发,如何设计鼠标显示的形状?
  • CSS 专业技巧
  • JavaScript 基本功--面试宝典
  • JavaScript学习总结——原型
  • Java超时控制的实现
  • Netty+SpringBoot+FastDFS+Html5实现聊天App(六)
  • SpiderData 2019年2月23日 DApp数据排行榜
  • 汉诺塔算法
  • 讲清楚之javascript作用域
  • 开源中国专访:Chameleon原理首发,其它跨多端统一框架都是假的?
  • 聊聊hikari连接池的leakDetectionThreshold
  • 每天一个设计模式之命令模式
  • 使用parted解决大于2T的磁盘分区
  • ​【数据结构与算法】冒泡排序:简单易懂的排序算法解析
  • $.ajax中的eval及dataType
  • $LayoutParams cannot be cast to android.widget.RelativeLayout$LayoutParams
  • (02)Unity使用在线AI大模型(调用Python)
  • (2)Java 简介
  • (CPU/GPU)粒子继承贴图颜色发射
  • (ISPRS,2021)具有遥感知识图谱的鲁棒深度对齐网络用于零样本和广义零样本遥感图像场景分类
  • (补充)IDEA项目结构
  • (创新)基于VMD-CNN-BiLSTM的电力负荷预测—代码+数据
  • (二)pulsar安装在独立的docker中,python测试
  • (附源码)计算机毕业设计SSM智慧停车系统
  • (十五)、把自己的镜像推送到 DockerHub
  • (十五)使用Nexus创建Maven私服
  • (四)opengl函数加载和错误处理
  • (一)appium-desktop定位元素原理
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .Net 8.0 新的变化
  • .NET Core 通过 Ef Core 操作 Mysql
  • .Net 代码性能 - (1)
  • .NET 同步与异步 之 原子操作和自旋锁(Interlocked、SpinLock)(九)
  • .Net 知识杂记
  • .net 逐行读取大文本文件_如何使用 Java 灵活读取 Excel 内容 ?
  • .NET/C# 异常处理:写一个空的 try 块代码,而把重要代码写到 finally 中(Constrained Execution Regions)
  • .NET多线程执行函数
  • .NET业务框架的构建
  • /tmp目录下出现system-private文件夹解决方法
  • @Transient注解
  • [Angularjs]asp.net mvc+angularjs+web api单页应用之CRUD操作