脚本宝典收集整理的这篇文章主要介绍了剑指offer计划25(模拟中等)---java,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
剑指 Offer 29. 顺时针打印矩阵
常规开头,先判断特殊情况,然后创建四个变量存放矩阵四边的长度限制。 创建res数组存放结果。 循坏开始,遍历完一行或者一列,就将该行从矩阵的范围内删除, 最终判断左边是否大于右边,上边是否大于下边来判断循环是否应该结束。
class Solution {
public int[] spiralOrder(int[][] matrix) {
if (matrix.length==0) return new int[0];
int l = 0, r=matrix[0].length-1,t=0,b=matrix.length-1,x=0;
int []res = new int[(r+1)*(b+1)];
while(true){
for(int i=l;i<=r;i++) res[x++]=matrix[t][i];
if(++t>b) break;
for(int i=t;i<=b;i++) res[x++]=matrix[i][r];
if(--r<l) break;
for(int i=r;i>=l;i--) res[x++]=matrix[b][i];
if(--b<t) break;
for(int i=b;i>=t;i--) res[x++]=matrix[i][l];
if(++l>r) break;
}
return res;
}
}
剑指 Offer 31. 栈的压入、弹出序列
这题我还以为要用什么数学方法,结果发现用一个栈来实现这个操作就行了。 遍历pushed数组,每个数都判断是否为pop的数组里的当前元素。是的话就推出,并且pop数组的索引+1 最终判断栈里是否为空则可知道顺序是否正确。
class Solution {
public boolean validatestackSequences(int[] pushed, int[] popPEd) {
Stack<Integer> stack = new Stack();
int x=0;
for(int i:pushed){
stack.push(i);
while(!stack.iSEMpty() &&stack.peek()==popped[x] ) {
stack.pop();
x++;
}
}
return stack.isEmpty();
}
}
以上是脚本宝典为你收集整理的剑指offer计划25(模拟中等)---java全部内容,希望文章能够帮你解决剑指offer计划25(模拟中等)---java所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。