编程语言剑指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;i--) res[x++]=matrix[b][i];
            if(--b=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) {
        Stackstack = 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();
    }
}

文章来源:https://www.cnblogs.com/urmkhaos/p/15334200.html

(0)

相关推荐

  • 剑指offer

    03 数组中重复的数字 public int findRepeatNumber(int[] nums){ //排序后的数组,重复元素必然相邻 Arrays.sort(nums); //结果集 int ...

  • STL_stack容器

    一.stack简介 stack是一种先进后出(First In Last Out,FILO)的数据结构,它只有一个出口.stack容器允许新增元素,移除元素,取得栈顶元素,但是除了最顶端外,没有任何其 ...

  • ​LeetCode刷题实战227:基本计算器 II

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  • 剑指 Offer 30. 包含min函数的栈

    定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min.push 及 pop 的时间复杂度都是 O(1). 示例:MinStack minStack = ne ...

  • 每日一起 剑指offer (顺时针打印矩阵)

    编程是很多偏计算机.人工智能领域必须掌握的一项技能,此编程能力在学习和工作中起着重要的作用.因此小白决定开辟一个新的板块"每日一题",通过每天一道编程题目来强化和锻炼自己的编程能力 ...

  • 每日一题 剑指offer(用两个栈实现队列)

    编程是很多偏计算机.人工智能领域必须掌握的一项技能,此编程能力在学习和工作中起着重要的作用.因此小白决定开辟一个新的板块"每日一题",通过每天一道编程题目来强化和锻炼自己的编程能力 ...

  • 编程语言剑指offer计划28(搜索与回溯算法困难)---java

    1.1.题目1 剑指 Offer 37. 序列化二叉树 1.2.解法 这题给我笑死了,我看到题解有个解法,我愿称之为神. public class Codec { private TreeNode r ...

  • 剑指offer计划5(查找算法中等版)---java

    剑指offer计划5(查找算法中等版)---java 1.1.题目1 剑指 Offer 04. 二维数组中的查找 1.2.解法 其实就是暴力解法的升级版,从最后一行开始判断,通过num当前的大小, 如 ...

  • 剑指offer计划7(搜索与回溯算法简单版)---java

    1.1.题目1 剑指 Offer 26. 树的子结构 1.2.解法 这题看了解法,感叹真的6,代码量减了很多. (A != null && B != null) && ...

  • 【剑指Offer】数值的整数次方

    题目描述 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 保证base和exponent不同时为0 解法1 最直接的思路,计算base的 ...

  • 【剑指Offer】链表中倒数第k个结点

    题目描述 输入一个链表,输出该链表中倒数第k个结点. 解法 基本思路是使用两个辅助指针p, q,让p先走k - 1步后,p, q两个指针再一起走 这样当p指针走到链表的末尾时,q指针刚好走到的就是倒数 ...

  • 【剑指Offer】反转链表

    题目描述 输入一个链表,反转链表后,输出新链表的表头. 解法1 可以使用三个辅助指针pHead, last,next pHead记录当前节点,last记录上一个节点,next记录下一个节点 首先使用n ...

  • 剑指 Offer 14- I. 剪绳子

    我服了.动态规划杀我. 可以说一说解决动态规划的思路(只做了两三道就总结了emmm) 1.识别动态规划问题 --重叠子问题:大问题可以分为一个个子问题.和分治策略分割的子问题不同(分治问题的子问题是相 ...