LeetCode004 尋找兩個正序陣列的中位數

2021-10-24 15:32:13 字數 1457 閱讀 8432

給定兩個大小為 m 和 n 的正序(從小到大)陣列nums1nums2。請你找出並返回這兩個正序陣列的中位數。

輸入: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 ...