剑指 Offer 11. 旋转数组的最小数字
class Solution {
public int minArray ( int [ ] numbers) {
int i= 0 ;
int j= numbers. length- 1 ;
while ( i<= j) {
int mid= ( i+ j) / 2 ;
if ( numbers[ mid] > numbers[ j] ) {
i= mid+ 1 ;
} else if ( numbers[ mid] < numbers[ j] ) {
j= mid;
} else {
j-- ;
}
}
return numbers[ i] ;
}
}
面试题32 - I. 从上到下打印二叉树
class Solution {
public int [ ] levelOrder ( TreeNode root) {
if ( root== null ) return new int [ 0 ] ;
Queue < TreeNode > queue= new LinkedList < > ( ) ;
List < Integer > list= new ArrayList < > ( ) ;
queue. add ( root) ;
while ( ! queue. isEmpty ( ) ) {
TreeNode temp= queue. poll ( ) ;
list. add ( temp. val) ;
if ( temp. left!= null ) queue. add ( temp. left) ;
if ( temp. right!= null ) queue. add ( temp. right) ;
}
int [ ] res= new int [ list. size ( ) ] ;
for ( int i= 0 ; i< list. size ( ) ; i++ ) {
res[ i] = list. get ( i) ;
}
return res;
}
}
剑指 Offer 32 - II. 从上到下打印二叉树 II
class Solution {
public List < List < Integer > > levelOrder ( TreeNode root) {
List < List < Integer > > res= new ArrayList < > ( ) ;
if ( root== null ) return res;
Queue < TreeNode > queue= new LinkedList < > ( ) ;
queue. add ( root) ;
while ( ! queue. isEmpty ( ) ) {
int n= queue. size ( ) ;
List < Integer > list= new ArrayList < > ( ) ;
while ( n!= 0 ) {
TreeNode temp= queue. poll ( ) ;
list. add ( temp. val) ;
if ( temp. left!= null ) queue. add ( temp. left) ;
if ( temp. right!= null ) queue. add ( temp. right) ;
n-- ;
}
res. add ( list) ;
}
return res;
}
}