本文主要是介绍算法之路-Z字形变换,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 前言
- 暴力破解
- 算法描述:
- 代码实现:
- 代码优化:
- 总结
前言
给定两个大小分别为 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 =
这篇关于算法之路-Z字形变换的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!