加油!!!
自助者,天助之。
自弃者,天弃之。
第三题
public class offer3 {
/*题目
* 在一个二维数组中,每一行从左到右递增,每一列从上到下递增
* 输入一个二维数组和目标值,判断数组是否含有该目标值
* */
/* 分析
* 到右下角都是递增的,所以选一行列的最大值开始查找,即右上或者左下
*
* 左下角思路:
*
* 因为是递增,所以判断比原来元素大还是小,直接移动列或行
* 在一列看,只要比他小就上移动,因为最左边一列就是各行最小值,目标值小了就直接排除,进入上
* 一行
* 一旦目标数比左下角的大,就不可能在等于左边那一列,因为它比所有的都大了,所以直接排除左边
* 那列,直接向右移动
*
* */
public static boolean find(int [][] array, int target){
//判断数组存在
if(array == null)
return false;
int row = 0;
int colum = array[0].length-1;
while(row < array.length && colum >= 0 ){
if(array[row][colum] == target)
return true;
if(array[row][colum] > target){
colum--;
}else {
row++;
}
}
return false;
}
public static void main (String args[] ){
int [][] array ={{1,2,3,4,5},{2,3,4,5,6},{4,5,6,7,8}};
System.out.println("======"+ find(array,1));
}
}
第四题
public class offer4 {
/*题目
* 将一个字符串中的空格替换为 "%20"
* */
/*思路与注意点
* 1.循环比较字符串单个字母,空格追加“%20”,否则追加字母
* 2.在组成新的字符串的过程中,大量字符串组成String效率太低,采用StringBuilder,StringBuffer
*
* */
public static String replacerSpace(String str){
if(str == null)
return null;
StringBuilder sb = new StringBuilder();
for(int i = 0; i < str.length(); i++){
if(String.valueOf(str.charAt(i)).equals(" ")){
sb.append("%20");
}else {
sb.append(str.charAt(i));
}
}
return String.valueOf(sb);
}
public static void main(String[] args){
System.out.print(replacerSpace("hello w o r l d "));
}
}