秋招突擊——算法打卡——5/25、5/26——尋找兩個正序數組的中位數

題目描述

在這里插入圖片描述

自我嘗試
  • 首先,就是兩個有序的數組進行遍歷,遍歷到一半即可。然后求出均值,下述是我的代碼。但這明顯是有問題的,具體錯誤的代碼如下。計算復雜度太高了,O(n),所以會超時,具體代碼如下
  • 這說明一個問題,不能逐個遍歷,只要遍歷就一定有問題的,可以嘗試一下對折尋找。
   double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {double numsLeft = 0,numsRight = 0;int len = nums1.size() + nums2.size(),index = 0;for(int i = 0, j = 0; i <= nums1.size() && j <= nums2.size();){if(nums1[i] < nums2[j])numsLeft = nums1[i ++] ;elsenumsLeft = nums2[j ++ ];if(index == len / 2 -1)  numsLeft = numsLeft;if(index == len / 2) numsRight = numsLeft;index ++;}if(len % 2 == 2)return (numsLeft + numsRight )/ 2;elsereturn numsRight;}
正常做法
  • 這里僅僅講解二分法,只需要注意這里的k是在剩下的元素中,尋找第k小的數字即可
double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {int tot = nums1.size() + nums2.size();if(tot % 2 == 0){int left =  find(nums1,0,nums2,0,tot / 2);int right = find(nums1,0,nums2,0,tot / 2 + 1);return (left + right) / 2.0}else{return find(nums1,0,nums2,0,tot / 2 + 1);}
}int find(vector<int> nums1,int i,vector<int> nums2,int j,int k){/** k表示需要查找的第k個小數字,第一個數字,就表示兩個數組在可審查的范圍內,都要找第一個元素,所以僅僅比較最小值即可*/// 確保第一個vector的長度是最短的if(nums1.size() - i > nums2.size() - j) return find(nums2,j,nums1,i,k);// 已經排除了第k-1個元素,剩下的就是第k個元素了,所以僅僅需要比較當前兩個數組的最小的元素即可if (k == 1){if(nums1.size() == i)   return nums2[j];else return min(nums1[i],nums2[j]);}// 第一個數組已經完全檢查過了,完全都被排除了,所以,相當于直接在第二個數組中找第k個值if (nums1.size() == i) return nums2[j + k - 1];// 更新移動數組的下標,進行第二次迭代,這里是將元素進行第二次縮減,然后在進行查找。// si和sj是更新之后的新的數組的下標int si = min((int)nums1.size(),i + k / 2) ,sj = j + k - k / 2;if(nums1[si - 1] > nums2[sj - 1])return find(nums1,i,nums2,sj,k - (sj - j));elsereturn find(nums1,si,nums2,j,k-(si - i));
}
分析總結
  • 還是適合中午或者下午做算法題,不然太難受了,一個上午都是暈乎乎的。

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

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

相關文章

數據結構--《二叉樹》

二叉樹 1、什么是二叉樹 二叉樹(Binar Tree)是n(n>0)個結點的優先集合&#xff0c;該集合或者為空集(稱為空二叉樹)&#xff0c;或者由一個根結點和兩顆互不相交的、分別稱為根結點的左子樹和右子樹的二叉樹構成。 這里給張圖&#xff0c;能更直觀的感受二叉樹&#xff1…

GDPU JavaWeb mvc模式

搭建一個mvc框架的小實例。 簡易計算器 有一個名為inputNumber.jsp的頁面提供一個表單&#xff0c;用戶可以通過表單輸入兩個數和運算符號提交給Servlet控制器&#xff1b;由名為ComputerBean.java生成的JavaBean負責存儲運算數、運算符號和運算結果&#xff0c;由名為handleCo…

C#中獲取FTP服務器文件

1、從ftp下載pdf的方法 public static void DownloadPdfFileFromFtp(string ftpUrl,string user,string password string localPath) { // 創建FtpWebRequest對象 FtpWebRequest request (FtpWebRequest)WebRequest.Create(ftpUrl); request.Method WebRequestMethods.Ftp…

簡單好用的文本識別方法--付費的好用,免費的更有性價比-記筆記

文章目錄 先說付費的進入真題&#xff0c;免費的來喏&#xff01;PixPin微信 先說付費的 直達網址!!! 進入真題&#xff0c;免費的來喏&#xff01; PixPin 商店里就有 使用示例&#xff1a; 可以看到&#xff1a;貼在桌面上的圖片可以復制圖片中的文字&#xff0c;真的很…

深入了解ASPICE標準:提升汽車軟件開發與質量管理的利器

隨著汽車行業的快速發展和技術創新&#xff0c;汽車軟件的開發和質量管理的重視程度不斷提升。ASPICE&#xff08;Automotive Software Process Improvement and Capability Determination&#xff09;標準作為一種專門針對汽車軟件開發過程的改進和能力評定的框架&#xff0c;…

Springboot+Vue+ElementUI開發前后端分離的員工管理系統01--系統介紹

項目介紹 springboot_vue_emp是一個基于SpringbootVueElementUI實現的前后端分離的員工管理系統 功能涵蓋&#xff1a; 系統管理&#xff1a;用戶管理、角色管理、菜單管理、字典管理、部門管理出勤管理&#xff1a;請假管理、考勤統計、工資發放、工資統計、離職申請、個人資…

8.Redis之hash類型

1.hash類型的基本介紹 哈希表[之前學過的所有數據結構中,最最重要的] 1.日常開發中,出場頻率非常高. 2.面試中,非常重要的考點, Redis 自身已經是鍵值對結構了Redis 自身的鍵值對就是通過 哈希 的方式來組織的 把 key 這一層組織完成之后, 到了 value 這一層~~ value 的其中…

最重要的時間表示,柯橋外貿俄語小班課

в第四格 1、與表示“鐘點”的數詞詞組連用 例&#xff1a; в шесть часов утра 在早上六點 в пять тридцать 在五點半 2、與表示“星期”的名詞連用 例&#xff1a; в пятницу 在周五 в следующий понедельник …

包和依賴管理:Python的pip和conda使用指南

包和依賴管理&#xff1a;Python的pip和conda使用指南 對于Python新手來說&#xff0c;包和依賴管理可能是一個令人困惑的概念。但不用擔心&#xff0c;本文將用淺顯易懂的語言&#xff0c;詳細介紹如何使用Python的兩個主要包管理工具&#xff1a;pip和conda。我們還會探討在安…

為 AWS 子賬戶添加安全組修改權限

文章目錄 步驟 1&#xff1a;創建 IAM 策略步驟 2&#xff1a;附加策略到子賬戶步驟 3&#xff1a;驗證權限 本文檔將操作如何為 AWS 子賬戶&#xff08;IAM 用戶或角色&#xff09;添加修改安全組的權限&#xff0c;包括 AuthorizeSecurityGroupIngress 和 RevokeSecurityGr…

解決uniApp 中不能直接使用 Axios 的問題

最近在使用 uniapp 進行小程序開發的時候&#xff0c;發現 uniapp 不能直接使用 axios&#xff0c;需要自己進行封裝一個 http 庫使用&#xff0c;于是有了這個項目。 項目地址&#xff1a;https://www.npmjs.com/package/uni-app-wxnetwork-tool 該包的功能介紹&#xff1a; u…

String類為什么設計成不可變的?

目錄 緩存 安全性 線程安全 hashCode緩存 性能 其實這個問題我們可以通過緩存、安全性、線程安全和性能幾個維度去解析。 緩存 字符串是Java最常用的數據結構&#xff0c;我們都知道字符串大量創建是非常耗費資源的&#xff0c;所以Java中就將String設計為帶有緩存的功能…

軟考 系統架構設計師之考試感悟2

接前一篇文章&#xff1a;軟考 系統架構設計師之考試感悟 今天是2024年5月25號&#xff0c;是個人第二次參加軟考系統架構師考試的正日子。和上次一樣&#xff0c;考了一天&#xff0c;身心俱疲。天是陰的&#xff0c;心是沉的&#xff0c;感覺比上一次更加沉重。仍然有諸多感悟…

express框架下后端獲取req.body報錯undefined

express框架下后端獲取req.body報錯undefined_express服務器post中data為undefine-CSDN博客 /*** 特殊說明&#xff1a;Express是一個單線程服務器器程序【必須存在指定的順序調用,否則無法達到預期的效果】*//*** 第一步&#xff1a;創建一個Express實例對象,并且在匹配路由之…

【python】python tkinter 計算器GUI版本(模仿windows計算器 源碼)【獨一無二】

&#x1f449;博__主&#x1f448;&#xff1a;米碼收割機 &#x1f449;技__能&#x1f448;&#xff1a;C/Python語言 &#x1f449;公眾號&#x1f448;&#xff1a;測試開發自動化【獲取源碼商業合作】 &#x1f449;榮__譽&#x1f448;&#xff1a;阿里云博客專家博主、5…

17.分類問題

機器學習分類問題詳解與實戰 介紹 在機器學習中&#xff0c;分類問題是一類常見的監督學習任務&#xff0c;其目標是根據輸入特征將數據樣本劃分為預先定義的類別之一。分類問題廣泛應用于各個領域&#xff0c;如圖像識別、自然語言處理、金融風險評估等。本文將詳細介紹機器…

Spring Cloud 項目中使用 Swagger

Spring Cloud 項目中使用 Swagger 關于方案的選擇 在 Spring Cloud 項目中使用 Swagger 有以下 4 種方式&#xff1a; 方式一 &#xff1a;在網關處引入 Swagger &#xff0c;去聚合各個微服務的 Swagger。未來是訪問網關的 Swagger 原生界面。 方式二 &#xff1a;在網關處引…

RedHat9 | DNS剖析-配置輔助DNS服務器

一、實驗環境 1、輔助域名DNS服務器 DNS通過劃分為若干個區域進行管理&#xff0c;每一個區域由1臺或多臺DNS服務器負責解析&#xff0c;如果僅僅采用1臺DNS服務器&#xff0c;在DNS服務器出現故障后&#xff0c;用戶將無法完成解析。 輔助DNS服務器的優點 容災備份&#x…

區間預測 | Matlab實現DNN-KDE深度神經網絡結合核密度估計多置信區間多變量回歸區間預測

區間預測 | Matlab實現DNN-KDE深度神經網絡結合核密度估計多置信區間多變量回歸區間預測 目錄 區間預測 | Matlab實現DNN-KDE深度神經網絡結合核密度估計多置信區間多變量回歸區間預測效果一覽基本介紹程序設計參考資料 效果一覽 基本介紹 1.Matlab實現DNN-KDE深度神經網絡結合…

MySQL數據處理增刪改

數據處理增刪改DML 由于約束&#xff0c;以下操作都有可能執行失敗&#xff08;后面講約束&#xff09; 插入數據 INSERT 基礎添加&#xff1a;VALUES 值的順序必須和表中字段順序相同 INSERT INTO class VALUES(1,王小,10); 向指定字段添加&#xff1a; 值的順序和指定…