剑指offer
susuxuezhang
刚入门的一只小白
展开
-
单例模式
1.、 1 /** 2 * 基础的单例模式,Lazy模式,非线程安全 3 * 优点:lazy,初次使用时实例化单例,避免资源浪费 4 * 缺点:1、lazy,如果实例初始化非常耗时,初始使用时,可能造成性能问题 5 * 2、非线程安全。多线程下可能会有多个实例被初始化。 6 * 7 * @author laichendong 8 * @since 2011-1...原创 2019-05-06 15:11:54 · 100 阅读 · 0 评论 -
数组中的逆序对
1.2.public class Solution { public int InversePairs(int [] array) { if(array==null||array.length==0) { return 0; } int[] copy = new int[array.lengt...原创 2019-05-21 23:31:45 · 133 阅读 · 0 评论 -
把字符串转换成整数
1.2.public class Solution { public static boolean flag; public int StrToInt(String str) { flag = false; //判断输入是否合法 if (str == null || str.trim().equals("")) { ...原创 2019-05-16 19:55:23 · 90 阅读 · 0 评论 -
树中两个节点的最低公共祖先
1.二叉搜索树public static TreeNode getLastCommonNode(TreeNode pRoot, TreeNode pLeft, TreeNode pRight){ TreeNode treeNode = null; if(pRoot == null || pLeft.val > pRight.val){ return null; } if(p...原创 2019-05-16 22:05:05 · 198 阅读 · 0 评论 -
把二叉树打印成多行
1.import java.util.ArrayList;import java.util.LinkedList;public class T99 { public static void main(String[] args) { TreeNode t1 = new TreeNode(1); TreeNode t2 = new TreeNode...原创 2019-05-16 22:27:06 · 78 阅读 · 0 评论 -
二叉树的下一个节点
1.2.分析二叉树的下一个节点,一共有以下情况:1.二叉树为空,则返回空;2.节点右孩子存在,则设置一个指针从该节点的右孩子出发,一直沿着指向左子结点的指针找到的叶子节点即为下一个节点;3.节点不是根节点。如果该节点是其父节点的左孩子,则返回父节点;如果该节点是其父节点的右孩子,继续向上遍历其父节点的父节点,重复之前的判断,返回结果。代码如下:public cl...原创 2019-05-16 23:12:50 · 175 阅读 · 0 评论 -
二叉搜索树的后序遍历序列
1.2.import java.util.Arrays;public class Solution { public boolean VerifySquenceOfBST(int [] sequence) { if(sequence==null||sequence.length==0){ return false; }...原创 2019-05-17 14:35:36 · 81 阅读 · 0 评论 -
二叉搜索树和双向链表
1.2.public class Solution { public TreeNode Convert(TreeNode pRootOfTree) { if(pRootOfTree==null) return null; if(pRootOfTree.left==null && pRootOfTree.r...原创 2019-05-17 15:06:29 · 137 阅读 · 0 评论 -
序列化二叉树
1.2.public class Solution { int index = -1; String Serialize(TreeNode root) { StringBuffer sb = new StringBuffer(); if(root==null){ sb.append("#,"); ...原创 2019-05-23 17:59:25 · 132 阅读 · 0 评论 -
滑动窗口的最大值
1.2.import java.util.ArrayList;import java.util.LinkedList;public class Solution { public ArrayList<Integer> maxInWindows(int [] num, int size){ ArrayList<Integer>...原创 2019-05-23 19:06:31 · 98 阅读 · 0 评论 -
矩阵中的路径
1.2.public class Solution { public boolean hasPath(char[] matrix, int rows, int cols, char[] str){ boolean visit[] = new boolean[matrix.length]; for (int i = 0; i < rows;...原创 2019-06-01 16:16:06 · 107 阅读 · 0 评论 -
机器人的运动范围
1.2.public class T13 { public static void main(String[] args) { int threshold=10; int rows=20,cols=20; System.out.println(movingCount(threshold,rows,cols)); } ...原创 2019-06-01 16:59:42 · 201 阅读 · 0 评论 -
背包问题(01,完全,多重)
public class Package { public static void main(String[] args) { int W=10; int[] w={2,3,2,5}; int[] v={3,4,5,6}; int[] k={2,1,2,1}; System.out.println(packa...原创 2019-06-18 22:22:53 · 301 阅读 · 0 评论 -
背包问题九讲
public class Package { public static void main(String[] args) { int W=10; int[] w={2,3,2,5}; int[] v={3,4,5,6}; int[] k={2,3,2,1}; int U=8; int[] u...原创 2019-06-19 23:00:56 · 203 阅读 · 0 评论 -
圆圈中最后剩下的数
1.2.import java.util.LinkedList;public class Solution { public int LastRemaining_Solution(int n, int m) { if(m==0){ return -1; } LinkedList<Integer&g...原创 2019-05-16 17:14:58 · 56 阅读 · 0 评论 -
扑克牌顺子
1.2.import java.util.Arrays;public class Solution { public boolean isContinuous(int [] numbers) { if(numbers.length!=5){ return false; } Arrays.sort(num...原创 2019-05-16 15:56:41 · 126 阅读 · 0 评论 -
翻转单词顺序列
1.2.public class Solution { public String ReverseSentence(String str) { if(str.length()==0){ return str; } int start=0; int end=0; char[]...原创 2019-05-16 14:58:41 · 78 阅读 · 0 评论 -
连续子数组的最大和
1.2./*算法时间复杂度O(n)用cur记录累计值,max记录和最大基于思想:对于一个数A,若是A的左边累计数非负,那么加上A能使得值不小于A,认为累计值对整体和是有贡献的。如果前几项累计值负数,则认为有害于总和,cur记录当前值。此时 若和大于max则用max记录下来*/public class Solution { pu...原创 2019-05-09 13:38:11 · 82 阅读 · 0 评论 -
数字在排序数组中出现的次数
1.2.public class Solution { public int GetNumberOfK(int [] array , int k) { int length = array.length; if(length == 0){ return 0; } int firstK = ...原创 2019-05-09 14:01:54 · 90 阅读 · 0 评论 -
二叉搜索树的第K个节点
1.2.import java.util.Stack;public class Solution { TreeNode KthNode(TreeNode pRoot, int k) { if(pRoot == null || k == 0) return null; int count = 0; Stack<Tr...原创 2019-05-19 23:05:20 · 84 阅读 · 0 评论 -
字符流中第一个不重复的字符
1.2.import java.util.LinkedHashMap;import java.util.Map;public class Solution { //Insert one char from stringstream private Map<Character, Integer> map = new LinkedHashMap<&g...原创 2019-05-20 00:02:06 · 84 阅读 · 0 评论 -
第一次只出现一次的字符位置
1.2.import java.util.LinkedHashMap;import java.util.Map;public class Solution { public int FirstNotRepeatingChar(String str) { Map<Character, Integer> map = new LinkedHa...原创 2019-05-20 00:28:35 · 161 阅读 · 0 评论 -
把数组排成最小的数
1.2.* 解题思路:* 先将整型数组转换成String数组,然后将String数组排序,最后将排好序的字符串数组拼接出来。关键就是制定排序规则。* 排序规则如下:* 若ab > ba 则 a > b,* 若ab < ba 则 a < b,* 若ab = ba 则 a = b;* 解释说明:* 比如 "3" <...原创 2019-05-20 14:03:42 · 81 阅读 · 0 评论 -
T26
1.public class Solution { public boolean HasSubtree(TreeNode root1,TreeNode root2) { if(root1==null || root2==null) { return false; } return HasSub...原创 2019-05-07 20:46:01 · 243 阅读 · 0 评论 -
最小的K个数
1. public static void quickSort(int[] a,int low,int high){ if (low >= high) { return; } int i=low,j=high; int temp=a[i]; while(i<j) { ...原创 2019-05-20 15:23:22 · 99 阅读 · 0 评论 -
数组中出现次数超过一半的数字
1.2.public class Solution { public int MoreThanHalfNum_Solution(int [] array) { if(array==null||array.length==0){ return -1; } int start=0; int e...原创 2019-05-20 16:20:16 · 78 阅读 · 0 评论 -
和为S的两个数字
1.2.import java.util.ArrayList;import java.util.HashMap;import java.util.Map;public class Solution { public ArrayList<Integer> FindNumbersWithSum(int [] array,int sum) { A...原创 2019-05-15 22:59:32 · 61 阅读 · 0 评论 -
数组中只出现一次的数字
1.2.import java.util.HashMap;import java.util.Map;public class Solution { public void FindNumsAppearOnce(int [] array,int num1[] , int num2[]) { if (array.length < 2) return; ...原创 2019-05-21 16:05:50 · 81 阅读 · 0 评论 -
和为S的连续正数系列
1.2.import java.util.ArrayList;public class Solution { public ArrayList<ArrayList<Integer> > FindContinuousSequence(int sum) { ArrayList<ArrayList<Integer> >...原创 2019-05-16 13:37:34 · 97 阅读 · 0 评论 -
左旋转字符串
1.2.public class Solution { public String LeftRotateString(String str,int n) { String res=""; if(str.length()<n){ return res; } int k=n%str.le...原创 2019-05-16 14:27:56 · 73 阅读 · 0 评论 -
阿里面经
1、内存溢出和内存泄露的区别内存溢出:(Out Of Memory---OOM)系统已经不能再分配出你所需要的空间,比如你需要100M的空间,系统只剩90M了,这就叫内存溢出。内存泄漏: ( Memory Leak )强引用所指向的对象不会被回收,可能导致内存泄漏,虚拟机宁愿抛出OOM也不会去回收他指向的对象。内存溢出的原因及解决方法:内存溢出原因: 1.内存中加载...原创 2019-08-24 17:09:29 · 237 阅读 · 0 评论