描述用两个栈来实现一个队列,使用n个元素来完成 n 次在队列尾部插入整数(push)和n次在队列头部删除整数(pop)的功能。 队列中的元素为int类型。保证操作合法,即保证pop操作时队列内已有元素。题解import java.util.*; import java.util.Stack; public class Solution { Stack<Integer> sta
题解import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 求二叉树的右视图 * @param preOrder int整型一维数组 先序遍历 * @param inOrder int整型一维数组 中序遍历
题目给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。1.对于该题的最近的公共祖先定义:对于有根树T的两个节点p、q,最近公共祖先LCA(T,p,q)表示一个节点x,满足x是p和q的祖先且x的深度尽可能大。在这里,一个节点也可以是它自己的祖先.2.二叉搜索树是若它的左子树不空,则左子树上所有节点的值均小于它的根节点的值; 若它的右子树不空,则右子树上所有节点的值均大于它的根节点的值3.所
题目输入一棵节点数为 n 二叉树,判断该二叉树是否是平衡二叉树。在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树平衡二叉树(Balanced Binary Tree),具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。样例解释:题解public class Solution { /** * 输入一棵节点数为 n
题目题解 public boolean isCompleteTree (TreeNode root) { // write code here if(root == null) return true; Queue<TreeNode> queue = new LinkedList<TreeNode>();
题目题解public class Solution { private TreeNode pre = null; /** * 给定一个二叉树根节点,请你判断这棵树是不是二叉搜索树 * * * @param root TreeNode类 * @return bool布尔型 */ public boolean isV
题目题解 public TreeNode Mirror (TreeNode pRoot) { if(pRoot == null){ return null; } TreeNode root = new TreeNode(pRoot.val); root.left = Mirror(pRoot.right);
题目题解import java.util.*; /* * public class TreeNode { * int val = 0; * TreeNode left = null; * TreeNode right = null; * public TreeNode(int val) { * this.val = val; * } * } */
题目题解/*思路:首先根节点以及其左右子树,左子树的左子树和右子树的右子树相同 * 左子树的右子树和右子树的左子树相同即可,采用递归 * 非递归也可,采用栈或队列存取各级子树根节点 */ public class Solution { boolean isSymmetrical(TreeNode pRoot) { if(pRoot == null){ return true; }
题目输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。如下图所示题解方法一:非递归版 解题思路: 1.核心是中序遍历的非递归算法。 2.修改当前遍历节点与前一遍历节点的指针指向。 import java.util.Stack; public TreeNode ConvertBSTToBiList(TreeNode root) { if(root==null)
题目题解public class Solution { /** * 给定一个二叉树root和一个值 sum ,判断是否有从根节点到叶子节点的节点值之和等于 sum 的路径 * * * @param root TreeNode类 * @param sum int整型 * @return bool布尔型 */ pub
题解import java.util.*; public class Solution { // 定义递归函数功能:求出当前结点的 public int maxDepth (TreeNode root) { // 递归终止 if(root == null) { return 0; } // d
题目题解 public ArrayList<ArrayList<Integer>> levelOrder (TreeNode root) { // write code here ArrayList<ArrayList<Integer>> res = new ArrayList<>(); i
题目题解深度优先搜索-递归 public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param root TreeNode类 * @return int整型一维数组 */ public int[] inorderTraversa
题目题解import java.util.*; public class Solution { public void preorder(List<Integer> list, TreeNode root){ //遇到空节点则返回 if(root == null) return; //先遍历根节点
题目题解public int compare (String version1, String version2) { // 用双指针遍历两个字符串 //截取.之前的数字, //比较数字大小,返回1、-1;如果全部比较完都没有结果,返回0 //关键在于处理前导0:加在前面数字乘10的后面 010-->10 00010
题目题解二分法:import java.util.ArrayList; public class Solution { public int minNumberInRotateArray(int [] array) { // 特殊情况判断 if (array.length== 0) { return 0; }
题目题解解法一:暴力法import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型一维数组 * @return int整型 */ public int Inver
题目题解如输入[2,4,1,2,7,8,4]时,会形成两个山峰,一个是索引为1,峰值为4的山峰,另一个是索引为5,峰值为8的山峰,如下图所示:import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums
题目在一个二维数组array中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。[[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]]给定 target = 7,返回 true。给定 target 
一、题目二、题解import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型一维数组 * @param target int整型 * @return int整型
一、题目二、题解import java.util.*; public class Solution { public ListNode deleteDuplicates (ListNode head) { //空链表 if(head == null) return null; ListNode res = new L
题目题解import java.util.*; public class Solution { public ListNode deleteDuplicates (ListNode head) { //空链表 if(head == null) return null; //遍历指针 ListNode
一、题目二、题解知识点:双指针双指针指的是在遍历对象的过程中,不是普通的使用单个指针进行访问,而是使用两个指针(特殊情况甚至可以多个),两个指针或是同方向访问两个链表、或是同方向访问一个链表(快慢指针)、或是相反方向扫描(对撞指针),从而达到我们需要的目的。思路:如下图所示,第一个节点是奇数位,第二个节点是偶数,第二个节点后又是奇数位,因此可以断掉节点1和节点2之间的连接,指向节点2的后面即节点3
一、题目二、题解2.1 方法一使用list列表因为需要判断是否为回文结构,所以要比较头尾的数据,而链表无法随机查询数据,所以可以先将链表转换成list。具体步骤首先初始化一个list列表;遍历链表,将链表中的值转移至list中;在list中通过比较头尾的值来判断链表是否为回文结构。代码如下:import java.util.*; /* * public class ListNode { * i
一、题目public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 the head node * @return ListNode类 */ public ListNode sortInLis
一、题目二、题解反转链表:public ListNode addInList (ListNode head1, ListNode head2) { // 进行判空处理 if(head1 == null) return head2; if(head2 == null){ return head1;
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号