【CT】LeetCode手撕—4. 尋找兩個正序數組的中位數

目錄

  • 題目
  • 1- 思路
  • 2- 實現
    • ?4. 尋找兩個正序數組的中位數——題解思路
  • 3- ACM 實現


題目

  • 原題連接:4. 尋找兩個正序數組的中位數

1- 思路

思路

  • 將尋找中位數 ——> 尋找兩個合并數組的第 K 大 (K代表中位數)

實現

  • ① 遍歷兩個數組 :通過比較兩個數組的第 [k/2] 個元素 ,如果 numsA[k/2] < numsB[k/2] 的時候,刪除 numsA 的前半部分元素。
  • ② 找剩余的 k/2 個元素

2- 實現

?4. 尋找兩個正序數組的中位數——題解思路

在這里插入圖片描述

class Solution {public double findMedianSortedArrays(int[] nums1, int[] nums2) {// 定義 int n = nums1.length;int m = nums2.length;// 用來將 奇數長度 和 偶數長度合并int left = (n+m+1)/2;int right = (n+m+2)/2;return (getKth(nums1,0,n-1,nums2,0,m-1,left)+getKth(nums1,0,n-1,nums2,0,m-1,right))*0.5;}public int getKth(int[] nums1,int start1,int end1,int[] nums2,int start2,int end2,int k){int len1 = end1-start1+1;int len2 = end2-start2+1;// 始終讓 len1 < len2if(len1>len2) return getKth(nums2,start2,end2,nums1,start1,end1,k);// 1. 遞歸終止條件if(len1 == 0 ) return nums2[start2+k-1];if(k==1) return Math.min(nums1[start1],nums2[start2]);// 2. 遞歸邏輯// 2.1 更新start用于遞歸:保證盡可能不越界 int i = start1 + Math.min(len1,k/2) -1;int j = start2 + Math.min(len2,k/2) -1;// 2.2 刪除邏輯if(nums1[i] > nums2[j]){return getKth(nums1,start1,end1,nums2,j+1,end2,k-(j - start2 + 1));}else{return getKth(nums1,i+1,end1,nums2,start2,end2,k-(i-start1+1));}}
}

3- ACM 實現


public class midNum {public static double twoNumMid(int[] nums1,int[] nums2){int len1 = nums1.length;int len2 = nums2.length;int left = (len1+len2+1)/2;int right = (len1+len2+2)/2;return (getKth(nums1,0,len1-1,nums2,0,len2-1,left)+getKth(nums1,0,len1-1,nums2,0,len2-1,right))*0.5;}// 遞歸public static int getKth(int[] nums1,int start1,int end1,int[] nums2,int start2,int end2,int k){// 找lenint len1 = end1-start1+1;int len2 = end2-start2+1;if(len1>len2) return getKth(nums2,start2,end2,nums1,start1,end1,k);// 2. 終止條件if(len1 == 0) return nums2[start2+k-1];if(k == 1) return Math.min(nums1[start1],nums2[start2]);// 3.單層遞歸int i = start1 + Math.min(k/2,len1)-1;int j = start2 + Math.min(k/2,len2)-1;// 刪 nums2if(nums1[i]>nums2[j]){return getKth(nums1,start1,end1,nums2,j+1,end2,k-(j-start2+1));}else{return getKth(nums1,i+1,end1,nums2,start2,end2,k-(i-start1+1));}}public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("輸入數組1的長度");int n = sc.nextInt();int[] nums1 = new int[n];System.out.println("輸入數組1元素");for(int i = 0 ; i < n ; i ++){nums1[i] = sc.nextInt();}System.out.println("輸入數組2的長度");int m = sc.nextInt();int[] nums2 = new int[m];System.out.println("輸入數組2元素");for(int j = 0 ; j < m;j++){nums2[j] = sc.nextInt();}double res = twoNumMid(nums1,nums2);System.out.println("中位數是"+res);}
}

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

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

相關文章

企業級監控系統Zabbix

文章目錄 Zabbix介紹Zabbix架構Zabbix serverZabbix agentZabbix proxy Zabbix Server的安裝Zabbix Agent的安裝監控主機流程zabbix_get自定義模板和監控項實戰用戶登錄數監控1.指定監控項命令2.重啟Agent服務3.在Server上創建監控項4.測試監控項5.查看監控項圖形 觸發器定義觸…

外泌體相關基因肝癌臨床模型預測——2-3分純生信文章復現——4.預后相關外泌體基因確定單因素cox回歸(2)

內容如下&#xff1a; 1.外泌體和肝癌TCGA數據下載 2.數據格式整理 3.差異表達基因篩選 4.預后相關外泌體基因確定 5.拷貝數變異及突變圖譜 6.外泌體基因功能注釋 7.LASSO回歸篩選外泌體預后模型 8.預后模型驗證 9.預后模型魯棒性分析 10.獨立預后因素分析及與臨床的…

【若依】關閉當前標簽頁并跳轉路由到其他頁面

使用場景如&#xff1a;當在新增/編輯路由頁面提交成功后&#xff0c;需要關閉當前頁&#xff0c;并跳轉回列表頁。 實現代碼&#xff1a; this.$store.dispatch("tagsView/delView", this.$route); //關閉當前頁 this.$router.replace({ path: "/xxx/xxx"…

【經驗總結】Springboot打印指定類的日志到指定文件中

原文地址&#xff1a;https://www.cnblogs.com/zeng1994/p/f9bff238b13a0bf8fb8bf88c41db7a34.html 以下內容已經過實踐&#xff0c;勘誤&#xff0c;總結 環境&#xff1a;Springboot2.5.2 公司有個項目&#xff0c;需要和幾個第三方系統對接。這種項目&#xff0c;日志一定要…

香橙派 AIpro 根據心情生成專屬音樂

香橙派 AIpro 根據心情生成專屬音樂 一、OrangePi AI pro 開發版參數介紹1.1 接口簡介1.2 OrangePi AI pro 的Linux系統功能適配情況1.3 開發板開機1.4 遠程連接到 OrangePi AIpro 二、開發環境搭建2.1 創建環境、代碼部署文件夾2.2 安裝 miniconda2.3 為 miniconda 更新國內源…

生態系統NPP及碳源、碳匯模擬技術教程

原文鏈接&#xff1a;生態系統NPP及碳源、碳匯模擬技術教程https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247608293&idx3&sn2604c5c4e061b4f15bb8aa81cf6dadd1&chksmfa826602cdf5ef145c4d170bed2e803cd71266626d6a6818c167e8af0da93557c1288da21a71&a…

【綜合能源】計及碳捕集電廠低碳特性及需求響應的綜合能源系統多時間尺度調度模型

目錄 1 主要內容 2 部分程序 3 實現效果 4 下載鏈接 1 主要內容 本程序是對《計及碳捕集電廠低碳特性的含風電電力系統源-荷多時間尺度調度方法》方法復現&#xff0c;非完全復現&#xff0c;只做了日前日內部分&#xff0c;并在上述基礎上改進升級為電熱綜合電源微網系統&…

vue+openlayers之幾何圖形交互繪制基礎與實踐

文章目錄 1.實現效果2.實現步驟3.示例頁面代碼3.基本幾何圖形繪制的關鍵代碼 1.實現效果 繪制點、線、多邊形、圓、正方形、長方形 2.實現步驟 引用openlayers開發庫。加載天地圖wmts瓦片地圖。在頁面上添加幾何圖形繪制的功能按鈕&#xff0c;使用下拉列表&#xff08;sel…

程序員績效管理-進一步思考

工時管理也好、項目管理&#xff08;軟件項目&#xff09;也好&#xff0c;市面上已經很多了&#xff0c;你做這個和他們區別何在&#xff1f;大的公司一般都自己做&#xff0c;誰又為你買單&#xff1f;根據目前的反饋&#xff0c;主要的疑問就是這兩個問題。 進一步思考如下&…

基于JavaScript、puppeteer的爬蟲

前期準備: npm puppeteer import puppeteer from puppeteer; puppeteer文檔 第一步&#xff1a;啟動瀏覽器&#xff0c;跳轉到需要爬取的頁面 const browser await puppeteer.launch({ headless: false });const page await browser.newPage();await page.goto(url, { w…

【目標檢測實驗系列】YOLOv5模型改進:引入輕量化多維動態卷積ODConv,減少計算量的同時保持精度穩定或略微上漲!(內含源代碼,超詳細改進代碼流程)

1. 文章主要內容 本篇博客主要涉及輕量化多維動態卷積ODConv&#xff0c;融合到YOLOv5模型中&#xff0c;減少計算量的同時保持精度穩定或略微上漲。&#xff08;通讀本篇博客需要7分鐘左右的時間&#xff09;。 2. 介紹 ODconv沿著空間、輸入通道、輸出通道以及卷積核空間的核…

領導被我的花式console.log吸引了!直接寫入公司公共庫!

背景簡介 這幾天代碼評審,領導無意中看到了我本地代碼的控制臺,被我花里胡哨的console打印內容吸引了! 老板看見后,說我這東西有意思,花里胡哨的,他喜歡! 但是隨即又問我,這么花里胡哨的東西,上生產會影響性能吧?我自信的說:不會,代碼內有判斷的,只有開發環境會…

后端工作之一:CrapApi —— API接口管理系統部署

一個API接口的網絡請求都有這些基本元素構成&#xff1a; API接口大多數是由后端編寫&#xff0c;前端開發人員進行請求調用 就是一個網絡請求的流程。 API&#xff08;Application Programming Interface&#xff09;接口是現代軟件開發中不可或缺的一部分。它們提供了一種…

14270-02G 同軸連接器

型號簡介 14270-02G是Southwest Microwave的2.4 mm 同軸連接器。這款連接器連接器采用不銹鋼、鈹銅合金、黃銅合金和 ULTEM 1000 等高質量材料&#xff0c;可能具有更好的耐腐蝕性、導電性和機械強度。金鍍層可以提供更低的接觸電阻和更好的耐腐蝕性。 型號特點 電纜的中心導體…

過擬合和欠擬合的概念

過擬合和欠擬合的概念 過擬合&#xff08;Overfitting&#xff09;是指機器學習模型在訓練數據上表現得非常好&#xff0c;但在新數據&#xff08;測試集或實際應用中的數據&#xff09;上卻表現不佳的現象。這種情況通常發生在模型復雜度過高&#xff0c;導致它過度適應了訓練…

健康課程知識培訓小程序網站如何學員教務管理

醫學專業學生或是從業醫生、護士等都需要不斷學習鞏固自己的技術和拓寬知識面&#xff0c;除了主要學習來源外&#xff0c;培訓機構課程需求也是提升自身實力的方法&#xff0c;市場中也存在不少醫藥健康內容培訓機構或是醫院內部員工培訓等。 運用雨科平臺搭建醫藥健康內容培…

前端八股文 說一下盒模型

網頁中任何一個元素都可以視為一個盒子&#xff0c;由里到外&#xff0c;盒模型包括外邊界&#xff08;margin&#xff09;、邊框&#xff08;border&#xff09;、內邊界&#xff08;padding&#xff09;和內容&#xff08;content&#xff09;。 盒模型基本分為3種&#xff1…

k8s離線安裝安裝skywalking9.4

目錄 概述資源下載Skywalking功能介紹成果速覽實踐rbacoapoap-svcuiui-svc 結束 概述 k8s 離線安裝安裝 skywalking9.4 版本&#xff0c;環境&#xff1a;k8s版本為&#xff1a;1.27.x 、spring boot 2.7.x spring cloud &#xff1a;2021.0.5 、spring.cloud.alibab&#xff1…

智慧消防視頻監控煙火識別方案,筑牢安全防線

一、方案背景 在現代化城市中&#xff0c;各類小型場所&#xff08;簡稱“九小場所”&#xff09;如小餐館、小商店、小網吧等遍布大街小巷&#xff0c;為市民生活提供了極大的便利。然而&#xff0c;由于這些場所往往規模較小、人員流動性大、消防安全意識相對薄弱&#xff0…

vue配置sql規則

vue配置sql規則 實現效果組件完整代碼父組件 前端頁面實現動態配置sql條件&#xff0c;將JSON結構給到后端&#xff0c;后端進行sql組裝。 這里涉及的分組后端在組裝時用括號將這塊規則括起來就行&#xff0c;分組的sql連接符&#xff08;并且/或者&#xff09;取組里的第一個。…