2021-02-18 笔试算法题
1.台阶问题
/**
* 走台阶问题算法
* 有x阶台阶,可以走1步,也可走2步,求有多少种走法
*/
public static long countSteps(int x){
if(x<=0){
return 0;
}else if(x<3&&x>0){
return x;
}else{
return countSteps(x-1)+countSteps(x-2);
}
}
2.求数组中不重复的一个数
方法1:使用Map
/**
* 求不重复数
*/
public static int simpleNum(int []arr){
Map<Integer,Integer> map=new HashMap<>();
int res=-1;
for(int i=0;i<arr.length;i++){
if(map.containsKey(arr[i])){
int value = map.get(arr[i]);
map.put(arr[i],value+1);
}else{
map.put(arr[i],0);
}
}
for (int i = 0; i < arr.length; i++) {
int key=arr[i];
int value = map.get(key);
if(value==0){
res=arr[i];
}
}
return res;
}
方法2:
/**
* 求不重复数
*/
public static int simpleNum(int []arr){
int res=-1;
int index=1;
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr.length; j++) {
if(arr[i]==arr[j]){
index++;
}
}
if(index==1){
res=arr[i];
}else{
index=0;
}
}
return res;
}