TypechoJoeTheme

Toasobi的博客

搜索到 28 篇与 的结果 ———
2023-03-16

栈的压入,弹出顺序(中等)

栈的压入,弹出顺序(中等)
这道题主要看你想没想到解题思路,想到了这道题就很简单思路:将pushed按照顺序压入栈中,每压一次就要判读栈顶元素是否和poped数组首位相同,如果相同则弹栈,并且while继续比较后一位。最后如果栈为空,则表示该poped是pushed的弹出序列代码如下(已加注释):<div>class Solution { public boolean validateStackSequences(int[] pushed, int[] popped) { LinkedList<Integer> stack = new LinkedList<>(); int index; //pushed下标位 int index2 = 0; //poped下标位 int point = 0; //栈中指针 为0则栈为空 boolean flag = false; //代表传入的参数是否有进入下面的判断,没有进入说明pushed长度为0 //按顺序压入 ...
2023-03-16

剑指offer(第二版)

0 阅读
0 评论
2023年03月16日
0 阅读
0 评论
2023-03-16

顺时针打印矩阵(简单)

顺时针打印矩阵(简单)
这道题主要可以使用模拟法来做。可以模拟打印矩阵的路径。初始位置是矩阵的左上角,初始方向是向右,当路径超出界限或者进入之前访问过的位置时,顺时针旋转,进入下一个方向。判断路径是否进入之前访问过的位置需要使用一个与输入矩阵大小相同的辅助矩阵 \textit{visited}visited,其中的每个元素表示该位置是否被访问过。当一个元素被访问时,将 \textit{visited}visited 中的对应位置的元素设为已访问。如何判断路径是否结束?由于矩阵中的每个元素都被访问一次,因此路径的长度即为矩阵中的元素数量,当路径的长度达到矩阵中的元素数量时即为完整路径,将该路径返回。仔细想一想,这道题好像和DP有点像。。下面是代码(注释讲解):<div>class Solution { public int[] spiralOrder(int[][] matrix) { if (matrix == null || matrix.length == 0 || matrix[0].length == 0) { return new i...
2023-03-16

剑指offer(第二版)

0 阅读
0 评论
2023年03月16日
0 阅读
0 评论
2023-03-14

对称的二叉树(简单)

对称的二叉树(简单)
这个题我做的真的恼火。当时我的思路是对每一个子节点进行入栈操作,如果入栈时等于栈顶节点,则栈顶节点出栈。最后如果栈为空则树为对称的。但是这样就需要使用层序遍历出所有节点,再对所有节点进行入栈操作。方法也是可行的。====================方法二:递归====================递归判断的是两个节点是否都为空或都不为空。以及两个节点的值是否相等。下一次递归传入的是节点1的左节点和节点2的右节点以及节点1的右节点和节点2的左节点。(二叉树是镜像的,它的根得是相同的吧,同时他的左右子节点是相互对称的。)代码如下:<div>class Solution { public boolean isSymmetric(TreeNode root) { if (root == null) return true; return helper(root.left, root.right); } public boolean helper(TreeNode root1, TreeNo...
2023-03-14

剑指offer(第二版)

0 阅读
0 评论
2023年03月14日
0 阅读
0 评论
2023-03-14

二叉树的镜像(简单)

二叉树的镜像(简单)
就是递归,转换左右节点代码如下:<div>class Solution { public TreeNode mirrorTree(TreeNode root) { reverse(root); return root; } public void reverse(TreeNode root){ //递归 if(root == null || (root.left == null && root.right == null)){ return; } TreeNode temp; temp = root.left; root.left = root.right; root.right = temp; reverse(root.left); reverse(root.right); } }</div>
2023-03-14

剑指offer(第二版)

0 阅读
0 评论
2023年03月14日
0 阅读
0 评论
2023-03-14

树的子结构(中等)

树的子结构(中等)
这道题一看就是可以用递归判断是否是子结构,但是一开始我不打算使用递归,而是想从表示树的数组中看出一些规律出来(失败了)。所以还是得用递归:本题的递归思路是:拿A和B进行判断,判断根节点值是否相等?如果相等,再判断左右子节点值是否都相等(在判断的时候一旦A 等于null了说明B比A还要长一截,肯定不是子树。相反如果B等于null了,说明B短一截,肯定就是子树了)。如果相等返回true,不相等则出来继续匹配A和B的左右节点。代码如下:<div>class Solution { public boolean isSubStructure(TreeNode A, TreeNode B) { //0.题目约定空树不是子树 if(B==null){return false;} return search(A,B); } private boolean compare(TreeNode A, TreeNode B){ if(B == null){ //5.A不一定要为空,...
2023-03-14

剑指offer(第二版)

0 阅读
0 评论
2023年03月14日
0 阅读
0 评论