剑指offer计划25(模拟中等)---java

发布时间:2022-07-04 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了剑指offer计划25(模拟中等)---java脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

1.1、题目1

剑指 Offer 29. 顺时针打印矩阵

1.2、解法

常规开头,先判断特殊情况,然后创建四个变量存放矩阵四边的长度限制。 创建res数组存放结果。 循坏开始,遍历完一行或者一列,就将该行从矩阵的范围内删除, 最终判断左边是否大于右边,上边是否大于下边来判断循环是否应该结束。

1.3、代码

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;
    }
}

2.1、题目2

剑指 Offer 31. 栈的压入、弹出序列

2.2、解法

这题我还以为要用什么数学方法,结果发现用一个栈来实现这个操作就行了。 遍历pushed数组,每个数都判断是否为pop的数组里的当前元素。是的话就推出,并且pop数组的索引+1 最终判断栈里是否为空则可知道顺序是否正确。

2.3、代码

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,请注明来意。