剑指offer
FromNowOnUntilTheEnd
每日记录
展开
-
判断递增排序的二维数组的指定整数是否存在
题目: 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。思路: 1)该二维数组是递增的,所以左上角的数最小,右下角的数最大 2)可以从右上角或者左下角开始遍历,我这里是从右上角开始 3)如...原创 2018-12-06 10:16:42 · 319 阅读 · 0 评论 -
斐波那契数列和青蛙跳台阶
public class Fibonacci { /** * 简单的递归,效率较低,因为有很多数字重复计算了 */ static long Fibonacci(int n){ if (n<=0){ return 0; } if (n==1){ return 1; ...原创 2019-04-29 14:16:50 · 438 阅读 · 0 评论 -
new哪个对象,即使接收的不是该对象(而是超类),调用的也是该对象的方法
public class Test{ public static void main(String[] args) throws ClassNotFoundException, IllegalAccessException, InstantiationException { Class c = Class.forName("com.effectiveJava.T.S...原创 2019-04-28 17:11:47 · 157 阅读 · 0 评论 -
用两个栈实现队列和两个队列实现栈
用两个栈实现队列,完成队列的Push和Pop操作。 队列中的元素为int类型。分析:栈是先进后出,队列是先进先出。用两个栈实现队列,栈1入栈,栈2出栈,就是队列的顺序了 Stack<Integer> stack1 = new Stack<>(); Stack<Integer> stack2 = new Stack<>();...原创 2019-04-28 16:27:17 · 128 阅读 · 0 评论 -
二叉树的下一个节点(C语法)
二叉树的下一个节点(C语法)给定一棵二叉树和其中的一个节点,如何找出中序遍历序列的下一个节点?树中的节点除了有两个分别指向左右子树的指针,还有一个指向父节点的指针。分析下一个节点位置的可能:1)如果一个节点有右子树,那么它的下一个节点就是它的右子树中的最左子节点。即:从右子节点出发一直沿着指向左子节点的指针,就能找到它的下一个节点BinaryTreeNode* GetNe...原创 2019-04-28 16:19:36 · 208 阅读 · 0 评论 -
重建二叉树
重建二叉树 输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。如前序{1,2,4,7,3,5,6,8}和中序{4,7,2,1,5,3,8,6},重建并输出头节点。public class Solution { public TreeNode reConstructBinaryTree(int [] pre,...原创 2019-04-26 16:51:19 · 141 阅读 · 0 评论 -
不修改数组找出重复的数字
不修改数组找出重复的数字 在一个长度为n+1的数组里的所有数字都在1~n的范围内,所以数组中至少有一个数字是重复的。从数组中找出任意一个重复的数字,但不能修改输入的数组。如{2,3,5,4,3,2,6,7}得到2或者3.解法1: 1)创建一个长度为n+1的辅助数组,然后逐一把原数组的每个数字复制到辅助数组 2)如果原数组中被复制的数字是m,就把它复制到下标为...原创 2019-04-26 16:44:50 · 670 阅读 · 0 评论 -
链表值逆序输出
题目: 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList思路: 1)栈的出栈顺序是先进后出的,所以只需要把链表的值按顺序存到栈里面就行了 2)出栈的时候使用ArrayList保存代码:/*** public class ListNode {* int val;* ListNode ne...原创 2018-12-06 16:30:59 · 344 阅读 · 0 评论 -
替换字符串中的空格(不用replace不新建String)和删除字符串函数str.delete(arg0, arg1)
题目: 将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy。则经过替换之后的字符串为We%20Are%20Happy。思路: 1)使用replace函数直接替换 2)新建一个StringBuffer SB遍历,非空格就append到SB,是空格就(SB.append('%');SB.append('2');SB.a...原创 2018-12-06 10:48:27 · 879 阅读 · 0 评论 -
实现Singleton模式和找数组中重复的数字
实现Singleton模式Singleton模式:只能生成一个实例的类,就是说只new一次。解法:1)不考虑多线程,只要判断类实例时否为null,为null就new,不为null就是已经有类实例了,不执行其他操作就好2)考虑多线程,当类实例为null,加一个同步锁,保证同一时间只有一个线程执行实例化类的代码(即new操作)3)最优:定义私有嵌套类,程序需要实例类,即定义了类实例...原创 2019-04-25 16:34:33 · 123 阅读 · 0 评论