給定兩個大小為 m 和 n 的正序(從小到大)陣列nums1
和nums2
。請你找出並返回這兩個正序陣列的中位數。
輸入:nums1 = [1,3], nums2 = [2]輸出:2.00000解釋:合併陣列 = [1,2,3] ,中位數 2輸入:nums1 = [1,2], nums2 = [3,4]
輸出:2.50000
解釋:合併陣列 = [1,2,3,4] ,中位數 (2 + 3) / 2 = 2.5
輸入:nums1 = [0,0], nums2 = [0,0]輸出:0.00000看到這題的難度評價是困難的時候,有點害怕。。。但是看完題目以後,覺得有點簡單。。。寫完之後覺得。。。好像不簡單。。。對於這個題,看完之後,有了兩個思路。
思路一:
將兩個有序陣列合併,合併完後進行快排,然後選出中位數。
思路二:
算出中位數的位置,用兩個指標,分別指兩個陣列,不斷移動兩個指標,找到位置。
寫**的時候,用的思路二,因為覺得寫合併陣列的**比較麻煩。。。其實是對c++不太熟悉。。不知道咋合併。。。
典型錯誤**:::
class solution else
cout << "1111111111111" << endl;
int n1 = 0;
int n2 = 0;
int jishu = 0;
int flag = 0;
while(jishu < len)
}while(nums1[n1] >= nums2[n2])
}if(jishu == ans)
}if(ifodd == 1)else
}if(ifodd == 0)else
}return 0;
}};
思路一正確**:
class solution
if (index2 == n)
if (k == 1)
// 正常情況
int newindex1 = min(index1 + k / 2 - 1, m - 1);
int newindex2 = min(index2 + k / 2 - 1, n - 1);
int pivot1 = nums1[newindex1];
int pivot2 = nums2[newindex2];
if (pivot1 <= pivot2)
else }}
double findmediansortedarrays(vector& nums1, vector& nums2)
else
}};
LeeTCode004 字串轉換整數
題目 實現乙個 atoi 函式,使其能將字串轉換成整數。首先,該函式會根據需要丟棄無用的開頭空格字元,直到尋找到第乙個非空格的字元為止。當我們尋找到的第乙個非空字元為正或者負號時,則將該符號與之後面盡可能多的連續數字組合起來,作為該整數的正負號 假如第乙個非空字元是數字,則直接將其與之後連續的數字字...
leetcode尋找兩個有序陣列的中位數
給定兩個大小為 m 和 n 的有序陣列 nums1 和 nums2。請你找出這兩個有序陣列的中位數,並且要求演算法的時間複雜度為 o log m n 你可以假設 nums1 和 nums2 不會同時為空。示例 1 nums1 1,3 nums2 2 則中位數是 2.0 示例 2 nums1 1,2 ...
LeetCode 尋找兩個有序陣列的中位數
給定兩個大小為 m 和 n 的有序陣列 nums1 和 nums2。請你找出這兩個有序陣列的中位數,並且要求演算法的時間複雜度為 o log m n 你可以假設 nums1 和 nums2 不會同時為空。示例 1 nums1 1,3 nums2 2 則中位數是 2.0 示例 2 nums1 1,2 ...