再来五道剑指offer题目 6.旋转数组的最小数字 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1. NOTE:给出的所有元素都大于0,若数组大小为0,请返回0. 解题思路:分治递归,直到出现一个递增的序列后停止. import java.util.*; public class Solution { public int min
面试题61:把二叉树打印成多行 public class Solution { public ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) { ArrayList<ArrayList<Integer>> res = new ArrayList<ArrayList<Integer>>(); travel(pRoot,res,0); return res; } public vo
二维数组中的查找 题目:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. public class Solution { public boolean Find(int target, int [][] array) { int row = array.length; int col = array[0].length; int j = 0; while
面试题3:二维数组中的查找 public class Solution { public boolean Find(int [][] array,int target) { boolean isFound = false; int m = array.length; int n = array[0].length; if(m>0 && n>0 ){ int row = 0; int col = n-1; while(row<m && col>=0){
面试题31:连续字数组的最大和 public class Solution { public int FindGreatestSumOfSubArray(int[] array) { int len = array.length; if(len==0) return 0; int[] dp = new int[len]; dp[0] = array[0]; int res = dp[0]; for(int i=1;i<len;i++){ dp[i] = Math.max(array[i],dp[
面试题41:和为S的连续正整数序列 import java.util.ArrayList; public class Solution { public ArrayList<ArrayList<Integer> > FindContinuousSequence(int sum) { ArrayList<ArrayList<Integer>> res = new ArrayList<ArrayList<Integer>>(); int