力扣網C語言編程題:在數組中查找目標值位置之暴力解法

一. 簡介

本文記錄一下力扣網上涉及數組的問題:排序數組中查找目標值的位置。主要以C語言實現。

二.?力扣網C語言編程題:在數組中查找目標值位置

題目:在排序數組中查找元素的第一個和最后一個位置

給你一個按照非遞減順序排列的整數數組 nums,和一個目標值 target。請你找出給定目標值在數組中的開始位置和結束位置。
如果數組中不存在目標值 target,返回 [-1, -1]。
你必須設計并實現時間復雜度為 O(log n) 的算法解決此問題。

示例 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]

提示:
? ? 0 <= nums.length <= 105
? ? -109 <= nums[i] <= 109
? ? nums 是一個非遞減數組
? ? -109 <= target <= 109

題目分析:

首先,題目提到數組是非遞減序列,就是說從左到右元素是不嚴格遞增的,即每個元素大于或等于前一個元素。

其次,題目要求方法的時間復雜度必須是 ?O(log n)。

結合上面的信息可推測,本題目可能是要求使用二分查找法來實現。

1. 解題思路一(暴力解法):

利用數組有序的特點從頭到尾遍歷一遍數組(相等的元素都在一起)。

暴力解法就是直接遍歷數組,找到 target第一次出現的位置和最后一次出現的位置。

這種解法的其實不滿足題目要求的,因為這種方法的時間復雜度是 O(n),已經超過 O(log n)。

具體方法如下:

(1) 動態申請一段內存存放返回的數據(只要 存儲2個元素的緩存即可);首先,緩存中元素都賦值為 -1;

(2) 遍歷數組,判斷 nums[i] 是否等于 target:

如果nums[i] 等于 target:再判斷 ret_ptr[0] 是否為初始值(確認是否是第一次出現的位置);

ret_ptr[0] 是初始值:則記錄元素Index:ret_ptr[0] = index;ret_ptr[0] 不是初始值,則將當前的 index值更新到ret_ptr[1]:?ret_ptr[1] = index;

C語言實現如下:

//暴力解法
/*** Note: The returned array must be malloced, assume caller calls free().*/
int* searchRange(int* nums, int numsSize, int target, int* returnSize) {int i;int* ret_ptr = (int*)malloc(2* sizeof(int));ret_ptr[0] = -1;ret_ptr[1] = -1;if((nums == NULL) || (numsSize <= 0) || (returnSize == NULL)){return ret_ptr;}*returnSize = 2;for(i = 0; i < numsSize; i++) {if(nums[i] == target) {if(ret_ptr[0] == -1) { //判斷是否是第一次出現的位置,是則記錄下元素的indexret_ptr[0] = i;}ret_ptr[1] = i; //記錄最后一次出現的位置}}return ret_ptr;
}

這里實現上注意,當數組為空時,處理上返回了 申請的內存指針(但是這里內存也賦了初始值),而不是返回NULL。這樣做比較合適。

上面實現方法雖然編譯通過,但是該實現方法時間復雜度為 O(n),不滿足題目要求。

下一篇文章使用二分查找法進行實現,因為二分查找法符合題目要求(時間復雜度為O(log n))。

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

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

相關文章

OSCP - Proving Grounds - tre

主要知識點 突破邊界的方法比較多樣觀察pspy64的檢測結果 具體步驟 依舊nmap掃描開始,開放了80,8082,22端口 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-12-16 03:39 UTC Nmap scan report for 192.168.56.84 Host is up (0.00083s latency). Not shown: 65532 c…

【Mars3d】支持的basemaps數組與layers數組的坐標系列舉

問題場景&#xff1a; basemap 是epsg4326的。&#xff0c;layer 圖層是 epsg 4450的。可以在一個頁面中展示嗎&#xff1f; 回復&#xff1a; 可以不同坐標系疊加&#xff0c;但layer 圖層是 epsg 4450的只支持arcgis動態服務&#xff0c;其他情況的不支持 wmts只支持3個坐標…

【算法】509. 斐波那契數

509. 斐波那契數 簡單 相關標簽 premium lock icon 相關企業 斐波那契數 &#xff08;通常用 F(n) 表示&#xff09;形成的序列稱為 斐波那契數列 。該數列由 0 和 1 開始&#xff0c;后面的每一項數字都是前面兩項數字的和。也就是&#xff1a; F(0) 0&#xff0c;F(1) 1 …

FOC學習筆記(5)內嵌式電機與表貼式電機的區別

1. 引言 在現代電機設計中&#xff0c;永磁同步電機&#xff08;Permanent Magnet Synchronous Motor, PMSM&#xff09;因其高效率、高功率密度和優異的動態性能&#xff0c;在工業、新能源汽車、航空航天等領域得到廣泛應用。根據永磁體在轉子中的安裝方式不同&#xff0c;永…

算法 按位運算

按位與&#xff08;Bitwise AND&#xff09;和按位異或&#xff08;Bitwise XOR&#xff09; 按位與&#xff08;&&#xff09; 按位與是對兩個數的二進制表示的每一位進行邏輯與操作。 規則&#xff1a;兩個對應位都為1時&#xff0c;結果位才為1&#xff0c;否則為0。…

python3GUI--基于PyQt5+SQLite3的網址審核系統(詳細圖文)

文章目錄 一&#xff0e;前言二&#xff0e;相關知識1.PyQt52.sqlite3 三&#xff0e;效果預覽1.登錄2.注冊3.普通用戶身份權限4.管理員身份權限 三、技術討論1.數據展示表格1. 更強的表現力和交互性&#xff08;前端功能豐富&#xff09;2. 數據處理效率更高&#xff08;支持大…

與后端現場聯調mock數據

當我們后端在現場沒辦法連后端本地就可以使用mock數據&#xff0c;模擬后端返回數據。使用工具&#xff1a;apifox 一、安裝好以后--新建接口 舉個栗子&#xff1a; 我想建個接口http://123.123.123.123:8080/api/login 二、 新建期望&#xff0c;返回固定值&#xff0c;否則…

C# 事件(發布者和訂閱者)

發布者和訂閱者 很多程序都有一個共同的需求&#xff0c;即當一個特定的程序事件發生時&#xff0c;程序的其他部分可以得到 該事件已經發生的通知。 發布者/訂閱者模式&#xff08;publisher/subscriber pattem&#xff09;可以滿足這種需求。在這種模式中&#xff0c;發布 …

RediSearch高性能全文搜索引擎

RediSearch 是 RedisLabs 團隊開發的一個高性能全文搜索引擎&#xff0c;可作為一個 Redis Module 運行在 Redis 上。 Redis7&#xff1a;百萬數據級Redis Search 超越 ElasticSearch Redis Search是基于Redis的全文搜索引擎模塊&#xff08;RediSearch&#xff09;&#xff0c…

菜譜大全——字符串處理藝術:從文本解析到高效搜索 [特殊字符][特殊字符]

目錄 前言一、現實場景二、技術映射2.1 基礎刀工&#xff1a;String類2.2 高效剁餡&#xff1a;StringBuilder2.3 精準雕刻&#xff1a;正則表達式 三、知識點呈現3.1 String vs StringBuilder vs StringBuffer3.2 正則表達式核心語法速查3.3 字符串拼接性能陷阱 四、代碼實現五…

webpack+vite前端構建工具 -答疑

webpack答疑 1 輸入webpack命令&#xff0c;執行的是全局版本還是本地版本的webpack 當在命令行窗口輸入webpack命令時&#xff0c;其執行優先級可通過以下步驟明確判斷&#xff1a; 1.1 【全局安裝優先機制】 執行原理&#xff1a;系統會按照環境變量PATH的順序逐級查找可執…

API接口開放平臺 Crabc 3.4 發布

Crabc 是一款 API 接口開發平臺&#xff0c;企業級接口管理、SQL2API 平臺。支持動態數據源、動態 SQL 和標簽&#xff0c; 支持接入&#xff08;mysql、oracle、達夢、TiDB、hive、es 和 mongodb&#xff09;等 SQL 或 NoSQL 數據源&#xff0c;在線可視化編寫 SQL 快速發布接…

PD快充協議芯片XSP04D支持全協議+支持串口通訊+支持與主板共用一個Type-C

隨著Type-C接口的充電器普及&#xff0c;市面上的PD充電器越來越多&#xff0c;小家電產品可不配充電器&#xff0c;使用Type-C接口&#xff0c;然后加入一顆PD協議取電協議芯片XSP08即可讓充電器/充電寶/車充等電源輸出9V/12V/15V/20V電壓給產品供電。 針對各種各樣的不同需求…

C# 高效加載txt文件內容

在 C# 中&#xff0c;高效加載 TXT 文件內容可以通過多種方法實現&#xff0c;具體方法的選擇取決于文件的大小和讀取需求。以下是一些常用的方法&#xff1a; 1. 使用 File.ReadAllText 如果文件比較小&#xff0c;并且你希望一行一行地讀取整個內容&#xff0c;可以使用 Fi…

(2)pytest執行用例的規則

1. 簡介 今天主要學習一下pytest的執行用例的規則。 2. 通過help幫助查看pytest如何使用 .查看pytest命令行參數&#xff0c;可以用pytest -h 或pytest --help查看 3. 用例設計原則 文件名以test_*.py文件和*_test.py以test_開頭的函數以Test開頭的類以test_開頭的方法所有的…

InnoDB數據頁

導讀&#xff1a; 我們已經知道了頁是數據庫存儲的基本單位&#xff0c;知道了一條行記錄的存儲格式是怎樣的&#xff0c;當數據越來越多時&#xff0c;那一條條行記錄具體又是怎么在頁中被組織起來的呢&#xff1f; 一、InnoDB數據頁結構 二、總結 1、一條條行數據是如何在數…

世賽背景下,中職物聯網應用與服務賽項實訓解決方案

一、世賽背景與物聯網應用賽項概述 1.1 世賽發展歷程及對中職教育的影響 世界技能大賽&#xff08;WorldSkills Competition&#xff0c;簡稱世賽&#xff09;自1950年創立以來&#xff0c;已經成為全球范圍內展示職業技能水平的重要賽事。截至2024年&#xff0c;世賽已成功舉…

【攻防篇】解決:阿里云docker 容器中自動啟動xmrig挖礦-- 實戰

文章目錄 場景一、問題二、原因三、解決方案1、控制臺處理2、 [清除與防護](https://blog.csdn.net/ladymorgana/article/details/148921668?spm1001.2014.3001.5501)1. 緊急處理&#xff1a;停止挖礦進程2. 清理被感染的容器3. 防護措施&#xff1a;防止再次被入侵4. 排查入侵…

飛算智造JavaAI:智能編程革命——AI重構Java開發新范式

文章目錄 引言&#xff1a;當傳統Java開發遇上AI一、技術架構解析1.1 核心架構圖1.2 關鍵技術棧 二、實戰演示&#xff1a;從需求到代碼的全AI輔助2.1 場景&#xff1a;電商優惠券系統開發2.2 代碼生成實例2.3 智能調試演示 三、與傳統開發模式對比測試3.1 基準測試數據3.2 典型…

[特殊字符] 分享裂變新姿勢:用 UniApp + Vue3 玩轉小程序頁面分享跳轉!

在如今流量成本日益攀升的移動互聯網時代&#xff0c;"用戶分享拉新" 成為了增長的重要策略。而微信小程序作為天然具備社交傳播力的平臺&#xff0c;提供了較完善的分享機制支持。本文將從實戰角度出發&#xff0c;手把手教你如何使用 uni-app Vue3 構建一個支持「…