前言
给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。算法的时间复杂度应该为 O(log (m+n)) 。
暴力破解
算法描述:
如图:图中的数字是下标,i为行数,k是每一行第k个元素。
按照4行的情况来算, numRows = 4;
1.第0行的字符位于k(2numRows-2)的位置。所对应的下标(0 , 6, 12)
2.最后一行(numRows-1)的字符位于k(2numRows-2)+numRows-1的位置。(3, 9,15)
3.第0行和最后一行之间第i行的字符位于k(2numRows−2)+i 以及 (k+1)(2numRows-2)- i处。(1, 5, 7,11, 13)
难点就是要把中间几行的规律搞清楚,就很好处理了。其实自己画一画,就能找出这些规律了。
代码实现:
class Solution {
public String convert(String s, int numRows) {
if( numRows == 1)
return s;
int temp = 2*numRows - 2;
StringBuilder str = new StringBuilder();
for(int i = 0; i < numRows; i++){
//第0行