java練習(34)

ps:題目來自力扣

尋找兩個正序數組的中位數

給定兩個大小分別為?m?和?n?的正序(從小到大)數組?nums1?和?nums2。請你找出并返回這兩個正序數組的?中位數?。

算法的時間復雜度應該為?O(log (m+n))?。

class Solution {public double findMedianSortedArrays(int[] nums1, int[] nums2) {// 為了讓二分查找的范圍更小,保證 nums1 是較短的數組if (nums1.length > nums2.length) {int[] temp = nums1;nums1 = nums2;nums2 = temp;}int m = nums1.length;int n = nums2.length;// 左半部分的元素數量,無論兩數組總長度奇偶,左半部分元素數量為 (m + n + 1) / 2int totalLeft = (m + n + 1) / 2;// 二分查找的左右邊界,在 nums1 的索引 0 到 m 之間查找分割線int left = 0;int right = m;while (left < right) {// nums1 的分割線位置int i = left + (right - left + 1) / 2;// nums2 的分割線位置,根據 left 部分元素總數確定int j = totalLeft - i;// 如果 nums1 分割線左邊的元素大于 nums2 分割線右邊的元素if (nums1[i - 1] > nums2[j]) {// 說明分割線 i 太靠右了,需要向左移動right = i - 1;} else {// 分割線 i 合適或者還可以往右移動left = i;}}// 最終確定的 nums1 分割線位置int i = left;// 最終確定的 nums2 分割線位置int j = totalLeft - i;// 計算分割線左右的四個關鍵元素int nums1LeftMax = (i == 0) ? Integer.MIN_VALUE : nums1[i - 1];int nums1RightMin = (i == m) ? Integer.MAX_VALUE : nums1[i];int nums2LeftMax = (j == 0) ? Integer.MIN_VALUE : nums2[j - 1];int nums2RightMin = (j == n) ? Integer.MAX_VALUE : nums2[j];// 根據兩數組總長度的奇偶性計算中位數if ((m + n) % 2 == 1) {// 總長度為奇數,中位數是左半部分的最大值return Math.max(nums1LeftMax, nums2LeftMax);} else {// 總長度為偶數,中位數是左半部分最大值和右半部分最小值的平均值return (double) (Math.max(nums1LeftMax, nums2LeftMax) + Math.min(nums1RightMin, nums2RightMin)) / 2;}}
}

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

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

相關文章

用Java創建一個驗證碼的工具類

在Java中創建一個驗證碼工具類&#xff0c;可以通過以下代碼實現。該工具類支持生成包含字母和數字的隨機驗證碼圖片&#xff0c;并添加干擾線和噪點以提高安全性。以下是詳細實現&#xff1a; 完整代碼實現 import javax.imageio.ImageIO; import java.awt.*; import java.aw…

提升信息檢索準確性和效率的搜索技巧

一、基礎技巧 精準關鍵詞 避免長句子&#xff0c;提取核心關鍵詞&#xff08;如用“光合作用 步驟”代替“請告訴我光合作用的具體過程”&#xff09;。 同義詞替換&#xff1a;嘗試不同表達&#xff08;如“AI 發展史” vs “人工智能 歷史”&#xff09;。 排除干擾詞 使用…

設計模式 之 工廠模式(簡單工廠模式、工廠方法模式、抽象工廠模式)(C++)

文章目錄 C 工廠模式引言一、簡單工廠模式概念實現步驟示例代碼優缺點 二、工廠方法模式概念實現步驟示例代碼優缺點 三、抽象工廠模式概念實現步驟示例代碼優缺點 C 工廠模式 引言 在 C 編程中&#xff0c;對象的創建是一個常見且基礎的操作。然而&#xff0c;當項目規模逐漸…

DAY12 Tensorflow 六步法搭建神經網絡

六步法&#xff1a; 一.import 導入各種庫&#xff0c;比如&#xff1a; import tensorflow as tf from tensorflow.keras.layers import Dense, Flatten from tensorflow.keras import Model import numpy as np import pandas as pd # 可能還會根據需求導入其他庫&…

Zookeeper分布式鎖實現

zookeeper最初設計的初衷就是為了保證分布式系統的一致性。本文將講解如何利用zookeeper的臨時順序結點&#xff0c;實現分布式鎖。 目錄 1. 理論分析 1.1 結點類型 1.2 監聽器 1.3 實現原理 2. 手寫實現簡易zookeeper分布式鎖 1.1 依賴 1.2 常量定義 1.3 實現zookeeper分布式…

Git是什么

簡單介紹&#xff1a; Git是一個分布式版本控制系統&#xff0c;用于跟蹤文件的更改&#xff0c;特別是在多人協作開發的環境中。 Key: 分布式 版本控制 系統 最常用于軟件開發&#xff0c;但也可以用于管理任何類型的文件和文件夾。 Git幫助團隊跟蹤和管理文件的歷史版本&a…

Pycharm 2024在解釋器提供的python控制臺中運行py文件

2024版的界面發生了變化, run with python console搬到了這里:

【分布式理論12】事務協調者高可用:分布式選舉算法

文章目錄 一、分布式系統中事務協調的問題二、分布式選舉算法1. Bully算法2. Raft算法3. ZAB算法 三、小結與比較 一、分布式系統中事務協調的問題 在分布式系統中&#xff0c;常常有多個節點&#xff08;應用&#xff09;共同處理不同的事務和資源。前文 【分布式理論9】分布式…

免費deepseek的API獲取教程及將API接入word或WPS中

免費deepseek的API獲取教程: 1 https://cloud.siliconflow.cn/中注冊時填寫邀請碼&#xff1a;GAejkK6X即可獲取2000 萬 Tokens; 2 按照圖中步驟進行操作 將API接入word或WPS中 1 打開一個word&#xff0c;文件-選項-自定義功能區-勾選開發工具-左側的信任中心-信任中心設置…

【SFRA】筆記

GK_SFRA_INJECT(x) SFRA小信號注入函數,向控制環路注入一個小信號。如下圖所示,當前程序,小信號注入是在固定占空比的基礎疊加小信號,得到新的占空比,使用該占空比控制環路。 1.2 GK_SFRA_COLLECT(x, y) SFRA數據收集函數,將小信號注入環路后,該函數收集環路的數據,以…

論文筆記-WSDM2024-LLMRec

論文筆記-WSDM2024-LLMRec: Large Language Models with Graph Augmentation for Recommendation LLMRec: 基于圖增強的大模型推薦摘要1.引言2.前言2.1使用圖嵌入推薦2.2使用輔助信息推薦2.3使用數據增強推薦 3.方法3.1LLM作為隱式反饋增強器3.2基于LLM的輔助信息增強3.2.1用戶…

Ubuntu 系統 cuda12.2 安裝 MMDetection3D

DataBall 助力快速掌握數據集的信息和使用方式&#xff0c;會員享有 百種數據集&#xff0c;持續增加中。 需要更多數據資源和技術解決方案&#xff0c;知識星球&#xff1a; “DataBall - X 數據球(free)” 貴在堅持&#xff01; ---------------------------------------…

Tomcat的升級

Tomcat 是一個開源的 Java Servlet 容器&#xff0c;用于部署 Java Servlet 和 JavaServer Pages&#xff08;JSP&#xff09;。隨著新版本的發布&#xff0c;Tomcat 通常會帶來性能改進、安全增強、新特性和對最新 Java 版本的更好支持。升級 Tomcat 服務器通常涉及到以下幾個…

Python常見面試題的詳解10

1. 哪些操作會導致 Python 內存溢出&#xff0c;怎么處理&#xff1f; 要點 1. 創建超大列表或字典&#xff1a;當我們一次性創建規模極為龐大的列表或字典時&#xff0c;會瞬間占用大量的內存資源。例如&#xff0c;以下代碼試圖創建一個包含 10 億個元素的列表&#xff0c;在…

多個用戶如何共用一根網線傳輸數據

前置知識 一、電信號 網線&#xff08;如以太網線&#xff09;中傳輸的信號主要是 電信號&#xff0c;它攜帶著數字信息。這些信號用于在計算機和其他網絡設備之間傳輸數據。下面是一些關于網線傳輸信號的詳細信息&#xff1a; 1. 電信號傳輸 在以太網中&#xff0c;數據是…

華為昇騰 910B 部署 DeepSeek-R1 蒸餾系列模型詳細指南

本文記錄 在 華為昇騰 910B(65GB) * 8 上 部署 DeepSeekR1 蒸餾系列模型&#xff08;14B、32B&#xff09;全過程與測試結果。 NPU&#xff1a;910B3 (65GB) * 8 &#xff08;910B 有三個版本 910B1、2、3&#xff09; 模型&#xff1a;DeepSeek-R1-Distill-Qwen-14B、DeepSeek…

【前端】Vue組件庫之Element: 一個現代化的 UI 組件庫

文章目錄 前言一、官網1、官網主頁2、設計原則3、導航4、組件 二、核心功能&#xff1a;開箱即用的組件生態1、豐富的組件體系2、特色功能亮點 三、快速上手&#xff1a;三步開啟組件化開發1、安裝&#xff08;使用Vue 3&#xff09;2、全局引入3、按需導入&#xff08;推薦&am…

關于uniApp的面試題及其答案解析

我的血液里流淌著戰意&#xff01;力量與智慧指引著我&#xff01; 文章目錄 1. 什么是uniApp&#xff1f;2. uniApp與原生小程序開發有什么區別&#xff1f;3. 如何使用uniApp實現條件編譯&#xff1f;4. uniApp支持哪些平臺&#xff0c;各有什么特點&#xff1f;5. 在uniApp中…

Ubuntu 下 nginx-1.24.0 源碼分析 - ngx_pool_t 類型

ngx_pool_t 定義在 src/core/ngx_core.h typedef struct ngx_pool_s ngx_pool_t; ngx_pool_s 定義在 src/core/ngx_palloc.h struct ngx_pool_s {ngx_pool_data_t d;size_t max;ngx_pool_t *current;ngx_chain_t *chain;ng…

力扣 最長遞增子序列

動態規劃&#xff0c;二分查找。 題目 由題&#xff0c;從數組中找一個最長子序列&#xff0c;不難想到&#xff0c;當這個子序列遞增子序列的數越接近時是越容易拉長的。從dp上看&#xff0c;當遍歷到這個數&#xff0c;會從前面的dp選一個最大的數加上當前數&#xff0c;注意…