日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

【LeetCode笔记】4. 寻找两个正序数组的中位数(Java、二分、递归)

發(fā)布時間:2024/7/23 java 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【LeetCode笔记】4. 寻找两个正序数组的中位数(Java、二分、递归) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

  • 題目描述
  • 思路 & 代碼

題目描述

  • 算是拖了好久的題目= =,一開始刷的時候沒打算直接沖困難
  • 不過面試常客了,還是得沖掉,而且不能留下心魔嘛!
  • 難點在于實現(xiàn)時間復(fù)雜度 O(log(m + n)),顯而易見得用二分法

思路 & 代碼

  • 長度奇偶情況處理:因為偶數(shù)要取平均值,所以這邊進行了兩次函數(shù)調(diào)用,分別取較小、較大的中位數(shù)再取平均(奇數(shù)就相當于跑重復(fù)了一次)
  • 主要思路:基于二分法的基礎(chǔ)上進行排除法
  • 兩數(shù)組元素都夠的情況,每次舍去 k / 2 個數(shù)
  • 一方不夠的情況,直接指向數(shù)組尾,看對比情況舍
  • 保證空數(shù)組一定是 nums1[ ]
  • 證明 & 更多見代碼注釋
  • 注意:k 并非下標
class Solution {/*** 正確性證明:每次去掉的值都是應(yīng)當去掉的* 因為:答案一定不在數(shù)組n去掉范圍中,極端情況下也是在數(shù)組m范圍的尾部* 核心:排除法,不斷去掉可去值,并維護k(中位數(shù)為第k小數(shù))* ps:其實有效代碼只有 20 行= =*/public double findMedianSortedArrays(int[] nums1, int[] nums2) {int n = nums1.length;int m = nums2.length;// +1 +2:k 不是下標,比如 k = 1,指第一個,也就是 index + k - 1// left & right 是為了奇偶// 奇數(shù)情況 left == right// 偶數(shù)情況 left == right - 1int left = (n + m + 1) / 2;int right = (n + m + 2) / 2;// 奇數(shù)情況:兩次一樣的過程// 偶數(shù)情況:中間倆個值的平均值return (getKth(nums1, 0, n - 1, nums2, 0, m - 1, left)+ getKth(nums1, 0, n - 1, nums2, 0, m - 1, right)) / 2.0;}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;// 保證空數(shù)組一定是 nums1[]if(len1 > len2){return getKth(nums2, start2, end2, nums1, start1, end1, k);}// 出現(xiàn)空數(shù)組,直接化成求一數(shù)組第k小數(shù)的情況if(len1 == 0){return nums2[start2 + k - 1];}// 找到最后的情況,直接返回兩數(shù)組當前最小值if(k == 1){return Math.min(nums1[start1], nums2[start2]);}// 指向第k/2小的位置 or 指向尾部int i = start1 + Math.min(len1, k / 2) - 1;int j = start2 + Math.min(len2, k / 2) - 1;// 舍去值的數(shù)量不一定相等(指向尾部情況)// 舍nums2的情況if(nums1[i] > nums2[j]){return getKth(nums1, start1, end1, nums2, j + 1, end2, k - (j - start2 + 1));}// 舍nums1的情況else{return getKth(nums1, i + 1, end1, nums2, start2, end2, k - (i - start1 + 1));}}}
  • 無注釋版
class Solution {public double findMedianSortedArrays(int[] nums1, int[] nums2) {int mid1 = (nums1.length + nums2.length + 1) / 2;int mid2 = (nums1.length + nums2.length + 2) / 2;return (getMid(nums1, 0, nums1.length - 1, nums2, 0, nums2.length - 1, mid1) + getMid(nums1, 0, nums1.length - 1, nums2, 0, nums2.length - 1, mid2)) / 2.0;}public int getMid(int[] nums1, int start1, int end1, int[] nums2, int start2, int end2, int k) {int len1 = end1 - start1 + 1;int len2 = end2 - start2 + 1;if(len2 < len1) {return getMid(nums2, start2, end2, nums1, start1, end1, k);}if(len1 == 0) {return nums2[start2 + k - 1];}if(k == 1) {return Math.min(nums1[start1], nums2[start2]);}int index1 = start1 + Math.min(len1, k / 2) - 1;int index2 = start2 + Math.min(len2, k / 2) - 1;if(nums1[index1] < nums2[index2]) {return getMid(nums1, index1 + 1, end1, nums2, start2, end2, k - (index1 - start1 + 1));}else {return getMid(nums1, start1, end1, nums2, index2 + 1, end2, k - (index2 - start2 + 1));}} }

總結(jié)

以上是生活随笔為你收集整理的【LeetCode笔记】4. 寻找两个正序数组的中位数(Java、二分、递归)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 456亚洲视频 | 喷水av| 久久久久国产免费 | 伊人激情视频 | 亚洲涩涩视频 | 一本色道久久hezyo无码 | 自拍偷拍 亚洲 | 天天天天躁天天爱天天碰2018 | 日韩 国产 在线 | 麻豆视频在线观看免费网站黄 | 国产精品综合在线 | 国产一区观看 | 国产网站免费在线观看 | 日本狠狠操| 一区二区三区视频 | www色婷婷| 日韩综合在线观看 | 性久久久久久久久久久久 | 国产在线美女 | 在线观看亚洲视频 | 中文字母av| 中文亚洲av片不卡在线观看 | www.亚洲欧美 | 国产精品国产三级国产 | 国产资源在线视频 | 美日韩黄色| 日本亲与子乱ay中文 | 99无码熟妇丰满人妻啪啪 | 琪琪色在线视频 | 午夜伦伦电影理论片费看 | 亚洲精品91在线 | 五月婷婷激情小说 | 就要操av | 一二三四视频社区在线 | 亚洲精品字幕在线观看 | 国产一极毛片 | 国产伦精品一区二区三区免费视频 | 美女视屏 | 嫩草在线观看视频 | 欧美,日韩,国产在线 | 精品欧美久久久 | 国产精品破处 | 美女被猛网站 | 一区在线视频 | 久久久888| 亚洲欧美激情小说另类 | 午夜剧场免费观看 | 日本一区二区三区免费在线观看 | 日韩性xxx| 日本a级网站 | 高跟鞋和丝袜猛烈xxxxxx | 中国美女一级看片 | 午夜视频成人 | 亚洲不卡一区二区三区 | 男人的网站在线观看 | 依依成人在线视频 | 操碰视频 | 国产原创视频 | 久久久96人妻无码精品 | 久热中文| 成人首页 | 久久青青视频 | 欧美人妻精品一区二区免费看 | 欧美无吗 | 中文字幕蜜臀 | 国产伦精品一区二区三区 | av免播放器 | 色站综合 | 亚洲女优一区 | 欧美视频xxxx | 理想之城连续剧40集免费播放 | 黄色一级国产 | 国产精品一区二区毛片 | 好吊视频一区二区三区四区 | 少妇精品一区 | 黄色美女视频网站 | 久久久久久av无码免费网站下载 | 直接看的av网站 | 中文字幕人妻一区二区在线视频 | 午夜影院一区二区三区 | 91在线观看喷潮 | 国产3p精品一区 | 强开乳罩摸双乳吃奶羞羞www | 天干夜天干天天天爽视频 | 欧美黄色网络 | 天天狠狠 | av毛片观看 | 久操操 | 国产天堂第一区 | 激情网站免费 | 又爽又黄又无遮挡 | 黄色大片在线免费观看 | 一区二区三区国产在线 | 久久久久久久久久久久久久 | 亚洲69av | 青青草精品在线视频 | 丝袜老师让我了一夜网站 | 亚洲最新av | 欧美精品在线视频 |