(這題雖然是困難的題,但是相對來說簡單一點)
給定兩個大小為 m 和 n 的正序(從小到大)陣列 nums1 和 nums2。
請你找出這兩個正序陣列的中位數,並且要求演算法的時間複雜度為 o(log(m + n))。
你可以假設 nums1 和 nums2 不會同時為空。
示例 1:
nums1 = [1, 3]
nums2 = [2]
則中位數是 2.0
示例 2:
nums1 = [1, 2]
nums2 = [3, 4]
則中位數是 (2 + 3)/2 = 2.5
思路建立乙個新的空陣列(這個陣列中存放的是nums和nums2的所有數,並且是公升序排列的 ), 建立兩個指標分別指向兩個陣列的開始,
let i = j = 0;
let set = ;
判斷nums[i]和nums[j]的大小
nums1[i] > nums2[j] 則set.push(nums2[j]) ; j++;
否則set.push(nums1[i]) ; i++;
while (i < nums1.length && j < nums2.length) else
}
nums1的長度和nums2的長度不一定相同,所以最後可能是有乙個的沒有遍歷完,要把剩餘的加入到set中
while (i < nums1.length)
while (j < nums2.length)
完整**
var findmediansortedarrays = function(nums1, nums2) else
}while (i < nums1.length)
while (j < nums2.length)
if(set.length % 2 == 1) else
};
JS實現 LeetCode 陣列類演算法(四)
更多演算法實現見 分析 將陣列公升序排序後,遍歷陣列,在遍歷的過程中需排除k diff對 i,j 中i重複以及k diff對 i,j 中j重複的情況,之後再判斷 i,j 中 i 與 j 的差值是否等於 k。如下 var findpairs function nums,k 公升序排序 for let ...
第四題 替換空格
可以使用這樣的方法 先遍歷一遍字串,求出字串中空格的個數,由此,可以計算出替換之後的字串的總長度,然後標記出字串的末尾p1和替換之後的末尾p2。再逐步往前移動p1,p2,同時將p1資料複製到p2的位置中,如果p1指向了乙個空格,則將p1往前移動一格,p2的位置依次插入 0 2 並往前移動。當空格替換...
2018暑假第四題
題目 判斷乙個整數是否是回文數。回文數是指正序 從左向右 和倒序 從右向左 讀都是一樣的整數。python 示例 1 輸入 121輸出 true示例 2 輸入 121輸出 false解釋 從左向右讀,為 121 從右向左讀,為 121 因此它不是乙個回文數。示例 3 輸入 10輸出 false解釋 ...