java
wuliLan
计算机专业学生。研究生在读。
展开
-
《剑指offer》二维数组中的查找
《剑指offer》二维数组中的查找题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。代码以下是第一次想出来的暴力解法,会报错:public class Solution { public boolean Find(int target, int ...原创 2018-06-02 19:51:32 · 656 阅读 · 0 评论 -
《剑指offer》二叉树的镜像
题目:操作给定的二叉树,将其变换为源二叉树的镜像。 输入描述: 二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 ...原创 2018-07-23 12:19:55 · 135 阅读 · 0 评论 -
《剑指offer》包含min函数的栈
题目定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。思路考虑到复杂度为O(1),如果直接思路将当前栈进行排序,不可能有这个复杂度,所以需要用空间来换时间,设计一个辅助栈来记住当前的最小值。 当前栈就是个 正常的先进后出的栈 辅助栈就是 每次装新的值进来就要判断是不是比栈顶(当前最小值)的值小,小就放进去,大就把栈顶的值再次放进去...原创 2018-07-26 10:54:04 · 154 阅读 · 0 评论 -
《剑指offer》合并两个排序的链表
题目输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。思路1 递归这题要用递归,得先把画图把规律找出来。如果表1当前值小于表2当前值,表1当前值成为新链表的表头,否则返回表2的当前值作为新链表的表头。 例子: 表1 1>2>6>8 表2 5>8 当表1当前值 1< 表2当前值 5 表1的值 ...原创 2018-07-22 17:17:55 · 2291 阅读 · 0 评论 -
java队列——queue详细分析
转载博客:https://www.cnblogs.com/lemon-flm/p/7877898.html java队列——queue详细分析 Queue: 基...转载 2018-07-31 17:05:48 · 186 阅读 · 0 评论 -
《剑指offer》 二叉树中和为某一值的路径
题目:输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)思路:利用先序遍历的递归思想,先遍历树的根节点,然后是左子树,最后是右子树。最后遍历的路径会一直顺着左子树把一条路径走完,每走一个节点,target-该节点的值,一直到路径遍历...原创 2018-08-05 17:58:05 · 182 阅读 · 0 评论 -
《剑指offer》从上往下打印二叉树
题目: 从上往下打印出二叉树的每个节点,同层节点从左至右打印。思路: 层序遍历直接想到的应该是基于队列实现。从上到下打印二叉树的规律:每一次打印一个结点的时候,如果该结点有子结点,则把该结点的子结点放到一个队列的末尾。接下来到队列头部取出最早进入队列的结点,重复前面的打印操作,直到队列中所有的结点都被打印出来为止。以下面例子说明:按层打印二叉树过程:注意不管是广度优先...原创 2018-08-01 17:11:48 · 221 阅读 · 0 评论 -
华为2018校园招聘(提前批) 笔试 输出ascii最小的最长连续字符串
题目: 给定一串字符,里面有些字符有连续出现的特点,请寻找这些连续字符串中最长的串,如果最长的串有多个,请输出ascii最小的个 思路: 利用start和end来记录当前连续出现的子字符串的起始位置,如果当前字符串长度&gt;历史最大长度或者两长度相同但当前串字符的ascii小,则用当前字符串的起始位置覆盖掉历史最长的那个。 这里有个边界问题要考虑,当前子串的结尾移动到最后一个字符时, ...原创 2018-08-01 22:15:26 · 1850 阅读 · 0 评论 -
华为2018校园招聘(提前批) 笔试 找字符串里的重复字符并排序
题目:找出输入字符串中的重复字符,再根据ascii把重复的字符从小到大排序思路:遍历一遍字符串数组,建立一个辅助的TreeMap,里面key=字符 value=字符个数,排序就是TreeMap会默认按键的ascii从小到大排列,省去排序的部分,最后就把value&amp;gt;1的输出就完事了,O(N)=n。import java.util.Scanner;import java.u...原创 2018-08-02 11:15:55 · 1283 阅读 · 0 评论 -
《剑指offer》树的子结构
题目输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)思路这题要借助递归的思想,边界一定要判断清楚,不然就很容易出错。 想法简单,先判断两颗树根节点是不是相同,如果相同,就判断树1的根节点开始的位置下是不是包含子树2。如果根节点不同,那从树1的左子树判断是不是包含子树2。如果还没找到,就从树1的右子树判断是不是包含子树2。其中 从 树的...原创 2018-07-23 11:48:48 · 130 阅读 · 0 评论 -
《剑指offer》数值的整数次方 快速幂算法
题目描述给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方思路快速幂算法是在o( logn )的时间内求得 a ^ b 核心思路: b &amp;amp; 1 == 1时(b为奇数) a ^ b = ( a ^ ( b / 2 ) ) ^ 2 * a; b &amp;amp; 1 == 0时(b为奇偶数) a ^ b = ( a ^ ( ...原创 2018-06-27 22:15:21 · 288 阅读 · 0 评论 -
《剑指offer》二进制中1的个数 找规律
题目描述输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。二进制中1的个数思路这题还是要分析,规律比较难找,没有普适性,仅仅针对这一题。 任意一个二进制 如 111,让该数-1成为110,111和110相与得到110,会发现他让最右边的一位变成0.接着110-1成为101.101与110相与得到100,100-1成为011和100相与得到000结束。 可以看到规律...原创 2018-06-27 21:47:54 · 325 阅读 · 0 评论 -
《剑指offer》替换空格
题目描述请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。思路:StringBuffer提供函数replace(int start, int end, String str),把字符串从start到end的全部用字符串str替换掉。但看了讨论之后,发现这题考的是void setCh...原创 2018-06-07 21:34:37 · 226 阅读 · 0 评论 -
《剑指offer》重建二叉树的解法
题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。思路:前序遍历是先遍历根节点,再依次遍历左节点和右节点。 中序遍历是先遍历左节点,然后根节点,最后右节点。 那么首先要去前序找根节点,再...原创 2018-06-24 15:58:53 · 927 阅读 · 0 评论 -
《剑指offer》用两个栈实现队列
题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。思路:栈1用来存原始的数据,将栈1的所有数据出栈并装到栈2内,栈2出栈就是目前该出的数,但是在栈2出栈前一定要先清空栈2.import java.util.Stack;public class Solution { Stack&lt;Integer&gt; stack1 = ...原创 2018-06-24 17:05:02 · 218 阅读 · 0 评论 -
《剑指offer》从头到尾打印链表
题目题目描述 输入一个链表,从尾到头打印链表每个节点的值。ps:注意本题并不是考察LinkedList的知识。 Java 集合系列05之 LinkedList详细介绍(源码解析)和使用示例 https://www.cnblogs.com/skywang12345/p/3308807.html解法1:递归思路把链表的值倒序存储在动态数组ArraryList,但链表本...原创 2018-06-09 22:08:34 · 284 阅读 · 0 评论 -
《剑指offer》旋转数组的最小数字-动态规划
题目把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。表面思路1一开始想的最简单的暴力破解,从后往前找。 分别思考了 {} 返回0 1 ...原创 2018-06-25 16:33:04 · 151 阅读 · 0 评论 -
《剑指offer》斐波那契数列-二分查找
题目:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。 n&lt;=39思路:这道有几个坑爹的地方。 首先,它的数列是从0开始出发。 其次, 第0项是0,第1项是1,后面才是正常的n项=n-1项+ n+1项 如果这题暴力,那么就是递归,花费整整1430ms,各位大佬已经毙掉这个解法。 这题用动态规划,只需要18ms 动态规划核心思想是:把该问题...原创 2018-06-25 22:02:39 · 174 阅读 · 0 评论 -
《剑指offer》跳台阶 找规律+动态规划
题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。思路这题主要是数学规律,设解法为f n=1 f=1 n=2 f=2 n=3 f=3 n=4 f=5 n=5 f=8 … 很明显是裴波那切数列,直接上动态规划就行。 很悲惨的是,我竟然忘记找规律这种古老又高效的解法,而在那捣鼓排列组合的公式,对不起小学老师(:з...原创 2018-06-26 20:25:49 · 334 阅读 · 0 评论 -
《剑指offer》变态跳台阶 找规律
题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。思路1-单纯找规律一道小学脑筋急转弯题,还是找规律 设置f为第n次的台阶数 n=1 f=1=2^0 n=2 f=2^1 n=3 f=4=2^2 n=4 f=8=2^3 n=5 f=16=2^4 … 解法为 f=x^n-1 解法:public c...原创 2018-06-26 21:02:26 · 203 阅读 · 0 评论 -
《剑指offer》矩形覆盖 找规律+动态规划
题目描述我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?思路找规律大法好。注意这一题n从0开始算,这个坑注意了,方法设为f n=0 f=0 n=1 f=1 n=2 f=2 n=3 f=3 n=4 f=5 n=5 f=8 … 很明显又是裴波那切数列。public class Solu...原创 2018-06-26 21:30:47 · 311 阅读 · 0 评论 -
《剑指offer》二叉搜索树的后序遍历序列
题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。思路:二叉搜索树的特点是 左子树的所有节点都比根节点小,右子树的所有节点都比根节点大,且左右子树本身也是二叉搜索树。 后序遍历的顺序是 先遍历左子树再遍历右子树最后遍历根节点。 考虑递归思想。 那么正确的二叉搜索树的数组,最后一位...原创 2018-08-02 16:03:42 · 149 阅读 · 0 评论