最近找实习,看了看《剑指Offer》,感觉这本书里面的内容不难,而且绝大部分的代码都是可以在30行之类完成的,很适合在面试等场合。里面的例题也都是一些很经典的题目,设计的方面也很广,结合了基本的数据结构,以及常用的时间和空间复杂度。只要把每道题认真的理解了,对付一般的面试应该问题不大。
剑指offer里面的题目大多是用C/C++写的,由于Java语言与这两种语言的差异性,可能有些解法就不是很适合Java语言,我自己最近再写这上面的题,一般的题目我都会在牛客网剑指Offer的专题AC之后再分享给大家。
本篇主要是一些简单的题目,面试所需的基础知识,我觉得除了要学好一门语言之外还需要掌握基本的数据结构以及算法,要有敏锐的思维能力,以及极强的知识迁移能力,这些能力都能让我们在面试的过程中给面试官留下极好的印象。
面试题3: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
输入描述:
array: 待查找的二维数组 target:查找的数字
输出描述:
查找到返回true,查找不到返回false
<span style="font-size:14px;">public class Solution {
public boolean Find(int [][] array,int target) {
//代码的健壮性,可以接受特殊输入测试
if(array==null||array.length<=0){
System.out.println("您输入的数组为空");
return false;
}
//思路就是从上往下查找,一旦找到就返回,若找到的数比所需的数大直接下一列
int row=array.length;
for(int i=0;i<row;i++){;
int j=0;
for(;j<array[i].length;j++){
if(array[i][j]==target){
return true;
}
if(array[i][j]>=target){
break;
}
}
//如果j=0,则说明第一行的第一个数字已经大于该数字,代表之后的数字全部大于该数字
//则可以跳出循环
if(j==0){
break;
}
}
return false;
}
}</span>
题4:请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为WeAreHappy。
这道题可以直接使用Java中的replace()来操作。
public class Solution {
public String replaceSpace(StringBuffer str) {
String temp=str.toString();
temp=temp.replace(" ","");
return temp;
}
}