頭歌資源庫(19)在排序數組中查找元素的首尾位置

一、 問題描述

?二、算法思想???

? ? ? ?該問題可以通過二分查找的思想來解決。

? ? ? ?首先,我們可以使用二分查找找到目標值在數組中的任意一個位置(即該位置的值等于目標值)。假設找到的位置為mid。

? ? ? ?接下來,我們需要在mid的左邊和右邊分別找到目標值的開始位置和結束位置。

在mid的左邊查找目標值的開始位置: 我們可以繼續使用二分查找,在數組的左半部分中查找目標值的開始位置。具體思路如下:

  • 初始化start為0,end為mid。
  • 如果nums[mid]等于target,則將end更新為mid-1,繼續在左半部分查找。
  • 如果nums[mid]大于target,則將end更新為mid-1,繼續在左半部分查找。
  • 如果nums[mid]小于target,則將start更新為mid+1,繼續在左半部分查找。 直到start大于end時,我們找到了目標值在數組中的開始位置。

? ? ? ? 在mid的右邊查找目標值的結束位置: 我們可以繼續使用二分查找,在數組的右半部分中查找目標值的結束位置。具體思路如下:

  • 初始化start為mid,end為數組長度-1。
  • 如果nums[mid]等于target,則將start更新為mid+1,繼續在右半部分查找。
  • 如果nums[mid]大于target,則將end更新為mid-1,繼續在右半部分查找。
  • 如果nums[mid]小于target,則將start更新為mid+1,繼續在右半部分查找。 直到start大于end時,我們找到了目標值在數組中的結束位置。

? ? ? ?最后,如果數組中不存在目標值target,則開始位置和結束位置都為0。

三、代碼實現??

#include<stdio.h>
int result[2];
void search(int *nums,int n,int target)
{result[0]=0;result[1]=0;int left=0,mid;int right=n-1;while(left<=right){mid=left+(right-left)/2;if(nums[mid]>target){right=mid-1;}else if(nums[mid]<target){left=mid+1;}else{result[0]=mid+1;right=mid-1;}}left=0;right=n-1;while(left<=right){int mid=left+(right-left)/2;if(nums[mid]>target){right=mid-1;}else if (nums[mid]<target){left=mid+1;}else{result[1]=mid+1;left=mid+1;}}
}int main(){int target,nums[100];int n,i;scanf("%d",&n);scanf("%d",&target);for(i=0;i<n;i++){scanf("%d",&nums[i]);}search(nums,n,target);printf("%-3d",result[0]);printf("%-3d",result[1]);return 0;}

執行結果??

?結語???

你要安靜的優秀

還有悄無聲息的堅強

!!!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/41016.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/41016.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/41016.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

UNIAPP_頂部導航欄右側添加uni-icons圖標,并綁定點擊事件,自定義導航欄右側圖標

效果 1、導入插件 uni-icons插件&#xff1a;https://ext.dcloud.net.cn/plugin?nameuni-icons 復制 uniicons.ttf 文件到 static/fonts/ 下 僅需要那個uniicons.ttf文件&#xff0c;不引入插件、單獨把那個文件下載到本地也是可以的 2、配置頁面 "app-plus":…

Python爬蟲+數據分析+數據可視化圖形-爬取高校排名數據

①本文主要使用python 爬取了中國大學排名前30的大學信息&#xff0c;并進行了數據處理及分析&#xff0c;是一個比較經典的python爬蟲和分析項目 ②主要內容:爬蟲數據預處理數據可視化分析 完整代碼請看這里拿&#x1f447;↓↓↓

Flutter本地數據持久化的幾種方式

目錄 前言 一、shared_preferences 1.添加依賴 2.保存數據 3.讀取數據 4.移除數據 5.Shared_preferences的優缺點 6.完整的示例代碼 二、path_provider 1.導入path_provider 2.創建文件讀寫的目錄 3.向文件中寫入數據 4.從文件中讀取數據 5.完整的示例代碼 三、…

Mac本地部署大模型-單機運行

前些天在一臺linux服務器&#xff08;8核&#xff0c;32G內存&#xff0c;無顯卡&#xff09;使用ollama運行阿里通義千問Qwen1.5和Qwen2.0低參數版本大模型&#xff0c;Qwen2-1.5B可以運行&#xff0c;但是推理速度有些慢。 一直還沒有嘗試在macbook上運行測試大模型&#xf…

我這個經驗好找嵌入式的工作嗎?

大家好&#xff0c;我是麥鴿。最近網友的提問&#xff0c;這樣的經驗&#xff0c;好找嵌入式的工作嗎&#xff1f; 下面是網友的情況&#xff1a; 本人目前大二機器人工程&#xff0c;未來想要入職嵌入式行業&#xff0c;有robomaster比賽經驗本人負責電控&#xff0c;但是由于…

基因組學系列3:基因分型Phasing與單倍型參考序列HRC

1. 基因分型Phasing概念 基因分型&#xff0c;也稱為基因定相、單倍體分型、單倍體構建等&#xff0c;即將一個二倍體&#xff08;或多倍體&#xff09;基因組上的等位基因&#xff08;或雜合位點&#xff09;正確定位到父親或母親的染色體上&#xff0c;最終使得來自同一親本…

相親交友APP系統婚戀交友社交軟件開發語音視頻聊天平臺定制開發-婚戀相親交友軟件平臺介紹——app小程序開發定制

互聯網飛速發展的時代&#xff0c;相親交友軟件成為了許多年輕人首選的相親方式&#xff0c;越來越多的單身男女希望在婚戀交友軟件平臺上尋找靈魂伴侶&#xff0c;相親交友軟件因此具有很高的市場價值。 多客婚戀相親交友系統是一款定位高端&#xff0c;到手就能運營的成熟婚戀…

軟件測評中心▏軟件驗收測試方法和測試內容簡析

在當今數字化轉型的浪潮下&#xff0c;軟件驗收測試變得越來越重要。軟件驗收測試&#xff0c;顧名思義&#xff0c;是對軟件進行驗收的過程中進行的一項測試。它用于確保軟件在滿足需求、達到預期效果后才能正式交付給客戶使用。軟件驗收測試是一項全面、系統的測試過程&#…

sublime 3 背景和字體顏色修改

sublime 4 突然抽風&#xff0c;每次打開都顯示 “plugin_host-3.3 has exited unexpectedly, some plugin functionality won’t be available until Sublime Text has been restarted” 一直沒調好&#xff0c;所以我退回到sublime 3了。下載好了軟件沒問題&#xff0c;但是一…

半導體光電

《半導體光電》創刊于1976年&#xff0c;是由中國電子科技集團公司主管、重慶光電技術研究所&#xff08;中國電子科技集團公司第四十四研究所&#xff09;主辦的中文科技期刊。本刊國內外公開發行&#xff0c;經過四十余年的發展已經成為我國光電子專業領域有代表性的刊物。 …

Zabbix 配置grafana對接

zabbix對接grafana簡介 Zabbix與Grafana對接可以實現更加豐富和美觀的數據可視化&#xff0c;可以讓您利用Grafana強大的可視化功能來展示Zabbix收集的數據。 zabbix插件的兩種安裝方式 使用grafana-cli 命令進行安裝在grafana管理頁面中進入Administration/Plugins and dat…

2024.7.4學習日報

1、ppt前三章 5日計劃 1、至少做到實驗 2、java

css中文字書寫方向

writing-mode 是 CSS 中的一個屬性&#xff0c;用于設置文本、內聯元素、表格單元格和表格列的書寫方向、文本排列以及塊流方向。以下是對 writing-mode 屬性的詳細介紹&#xff1a; 1. 語法和值 語法&#xff1a;writing-mode: horizontal-tb | vertical-rl | vertical-lr |…

在RT-Thread-Studio中添加arm_math庫

1.在CMSIS\Lib\GCC中找到對應的庫&#xff0c;如本文使用的libarm_cortexM4lf_math.a。將庫拷貝到工程&#xff0c;并做如下圖設置。搜索路徑為庫文件在項目中的實際位置。 2.將CMSIS\DSP\Include下的文件復制到工程目錄中&#xff0c;并添加包含路徑 3.添加宏定義&#xff0c…

Memcached緩存預熱深度解析:加速應用性能的秘訣

Memcached緩存預熱深度解析&#xff1a;加速應用性能的秘訣 在高性能計算環境中&#xff0c;Memcached作為一種廣泛使用的分布式內存緩存系統&#xff0c;其緩存預熱機制對于提升應用性能至關重要。緩存預熱可以減少系統啟動時的延遲&#xff0c;避免緩存未命中&#xff0c;從…

2806. 取整購買后的賬戶余額

2806. 取整購買后的賬戶余額 題目鏈接&#xff1a;2806. 取整購買后的賬戶余額 代碼如下&#xff1a; class Solution { public:int accountBalanceAfterPurchase(int purchaseAmount) {return 100-(purchaseAmount5)/10*10;} };

QTreeWidget的簡單使用

使用 QTreeWidget 實現復雜樹控件功能的詳細教程_treewidget 加控件-CSDN博客 #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include <QTreeWidget> namespace Ui { class MainWindow; }class MainWindow : public QMainWindow {Q_OBJECTpu…

阿里巴巴Arthas分析調優JVM實戰及常量池詳解

目錄 一、阿里巴巴Arthas詳解 Arthas使用場景 Arthas命令 Arthas使用 二、GC日志詳解 如何分析GC日志 CMS G1 GC日志分析工具 三、JVM參數匯總查看命令 四、Class常量池與運行時常量池 字面量 符號引用 五、字符串常量池 字符串常量池的設計思想 三種字符串操作…

墨烯的語言技術棧-C語言基礎-005

在VS的安裝路徑下有一個文件: newcfile.cpp的文件 在VS工程中創建新的.c或者.cpp文件的時候,都是拷貝newcfile.cpp這個文件的! everything工具中 有一個newcfile.cpp 然后打開文件路徑在newcfile.cpp 添加#define _CRT_SECURE_NO_WARNINGS替換即可 五.變量的作用域(局部變量…