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

63.排序数组中找元素的第一个元素和最后一个元素

1.题目描述

示例 1:

输入:nums = [5,7,7,8,8,10], target = 8输出:[3,4]

示例 2:

输入:nums = [5,7,7,8,8,10], target = 6输出:[-1,-1]

示例 3:

输入:nums = [], target = 0输出:[-1,-1]

2.代码

/** * Note: The returned array must be malloced, assume caller calls free(). */ int find_left_bound(int* nums, int numsSize, int target){ int left = 0; int right = numsSize - 1; int flag = 0; while(left <= right){ int mid = left + (right - left )/2; if(nums[mid] == target){ right = mid - 1;//找到了就往左边找左边界 flag = 1; } if(nums[mid] > target){ right = mid - 1; } if(nums[mid] < target){ left = mid + 1; } } //为什么会返回left呢? //当left == right的时候最后一次循环,如何right左移动,left才指向target if(flag == 0){ return -1; } return left; } int find_right_bound(int* nums, int numSize, int target){ int left = 0; int right = numSize - 1; int flag = 0; while(left <= right){ int mid = left + (right - left )/2; if(nums[mid] == target){ left = mid + 1;//找到了就往左边找左边界 flag = 1; } if(nums[mid] > target){ right = mid - 1; } if(nums[mid] < target){ left = mid + 1; } } if(flag == 0){ return -1; } //此时返回right return right; } int* searchRange(int* nums, int numsSize, int target, int* returnSize) { int left_bound = find_left_bound(nums,numsSize,target); int right_bound = find_right_bound(nums,numsSize,target); int* res = (int*)malloc(sizeof(int)*2); res[0] = left_bound; res[1] = right_bound; returnSize[0] = 2; return res; }
http://www.jsqmd.com/news/395034/

相关文章:

  • XHR.readyState详解
  • 区块链+:催生新的应用场景与生产关系变革
  • SQL 主机:深入解析数据库的核心
  • HBase Shell命令大全:从基础操作到高级查询全掌握
  • 6款毕业论文AI写作工具横向测评,帮你精准选择
  • 62 在递增二维数组中查找target,要求用Ologn
  • 毕业论文必备:6个高评分AI写作平台实测分析
  • ECharts 交互组件
  • Tauri 用“系统 WebView + 原生能力”构建更小更快的跨平台应用
  • 6个优质AI写作平台测评,助力毕业论文高效完成
  • 9、PipedInputStream和PipedOutputStream的源码分析和使用方法详细分析
  • 5467896
  • 毕业论文AI工具怎么选?6款上榜平台深度评测
  • 毕业论文AI写作平台推荐:6款热门工具测评对比
  • 7856786
  • 《jEasyUI 转换 HTML 表格为数据网格》
  • 《jEasyUI 创建 RSS 阅读器》
  • 从提示词到操作系统:掌握上下文工程,开启大模型进阶之路(收藏必备)
  • Matplotlib 安装指南
  • 凸优化数学基础笔记(五):极小值点的判定条件
  • DOM 浏览器:深入解析与优化实践
  • 大年初三
  • 题解:洛谷 P1064 [NOIP 2006 提高组] 金明的预算方案
  • 基于自适应ECDF阈值和像素连通性优化的信号时频域降噪方法(MATLAB)
  • 云南收入投稿
  • linux学习第一天
  • Qt 利用TCP/IP socket通信 发送与接收结构体(简单通信协议解析)
  • 题解:洛谷 P1077 [NOIP 2012 普及组] 摆花
  • 抓住风口!转行AI大模型,收入暴涨10倍+_小白程序员快速入门大模型,抢占AI时代先机!
  • 文本创作进化:从辅助写作到内容策划的全面赋能 - 指南