leetcode ZigZag Conversion
2015-05-30 19:57
267 查看
题目链接 点击打开链接
这个题目是我参照了别人的程序写出来的。具体思想如下
1这里有个特殊情况是行数为1的时候,如果1的时候不做特殊处理,我出现Exception in thread "main" java.lang.OutOfMemoryError: Java heap space错误。具体原因稍后分析。
2
定义:主列 ,在图形中每行都有数字的那一列。
程序按行处理输出。在每一行中除了第一行和最后一行外我们都会发现一个规律:主列后面之多有一个非主列元素。我们可以根据这个特点设置循环。
3找出数学公式
a:在某行中主列为j。那么下一个主列元素的索引是j=j+2*(numRows-1) 当然这个要判断不能超过s的总长
b:如果主列j后有非主列元素,那么他的索引是j+(numRows-1-i)*2 当然这个要判断不能超过s的总长(这里要排除第一列和最后一列,因为如果是第一列或最后一列这个公式算出来的是下一个元素是主列元素)
遇到的错误
输入s=“a” numRows=1;
错误类型是.OutOfMemoryError: Java heap space
这个是因为在程序循环更新j的时候j=j+2*(numRows-1)相当于执行j=j。这样的循环是死循环,导致内存溢出。
这个题目是我参照了别人的程序写出来的。具体思想如下
1这里有个特殊情况是行数为1的时候,如果1的时候不做特殊处理,我出现Exception in thread "main" java.lang.OutOfMemoryError: Java heap space错误。具体原因稍后分析。
2
定义:主列 ,在图形中每行都有数字的那一列。
程序按行处理输出。在每一行中除了第一行和最后一行外我们都会发现一个规律:主列后面之多有一个非主列元素。我们可以根据这个特点设置循环。
3找出数学公式
a:在某行中主列为j。那么下一个主列元素的索引是j=j+2*(numRows-1) 当然这个要判断不能超过s的总长
b:如果主列j后有非主列元素,那么他的索引是j+(numRows-1-i)*2 当然这个要判断不能超过s的总长(这里要排除第一列和最后一列,因为如果是第一列或最后一列这个公式算出来的是下一个元素是主列元素)
public class Solution { public static void main(String args[]) { System.out.println(convert("A", 1)); } public static String convert(String s, int numRows) { if(numRows==1) { return s; } int length=s.length(); StringBuilder result=new StringBuilder(); int middleIndex=0; for(int i=0;i<numRows;i++) { for(int j=i;j<length;j=j+2*(numRows-1)) { result.append(s.charAt(j)); if(i==0||i==numRows-1) { continue; } else { middleIndex=j+(numRows-1-i)*2; if(middleIndex<length) { result.append(s.charAt(middleIndex)); } } } } return result.toString(); } }
遇到的错误
输入s=“a” numRows=1;
错误类型是.OutOfMemoryError: Java heap space
这个是因为在程序循环更新j的时候j=j+2*(numRows-1)相当于执行j=j。这样的循环是死循环,导致内存溢出。
相关文章推荐
- 部分A+B
- 导数练习7
- Android 开发工具类 31_WebService 获取手机号码归属地
- Android 监听ScrollView的滑动
- 菜鸟学Android笔记(九):Schema之名称空间
- 【MyEclipse使用教程】—如何设置jsp页面为默认utf-8编码
- Infragist ics Ult imate 2015 Vol.1 - Product Keys
- BZOJ 1054: [HAOI2008]移动玩具( BFS )
- OpenCV中Mat数据的访问报错
- Java多态性 父类引用指向子类对象
- 百度之星初赛(1) 1003 序列变换 二分搜索
- 百度之星初赛(1)1001 超级赛亚ACMer
- 13.5 监视数据库镜像
- iOS中使用RNCryptor对资源文件加密
- iOS 错误集锦与断点调试
- 转!!!Mysql无法创建外键的原因
- 获取标题栏(actionbar)、状态栏高度的办法 onCreate()有效
- WCF承志医疗管理系统技术解析药品入库(一)
- poj_1061---扩展欧几里德算法
- Ansible-Tower快速入门-2.准备开始【翻译】