1.使用hashset
class Solution {
public int findRepeatNumber(int[] nums) {
Set<Integer> set=new HashSet<>();
for(int i:nums){
if(!set.contains(i)){
set.add(i);
}else{
return i;
}
}
return -1;
}
}
2.巧妙解法
class Solution {
public boolean findNumberIn2DArray(int[][] matrix, int target) {
if(matrix==null || matrix.length==0 || matrix[0].length==0){
return false;
}
int n=matrix.length,m=matrix[0].length;
//1.暴力解法
// for(int i=0;i<n;i++){
// for(int j=0;j<m;j++){
// if(matrix[i][j]==target){
// return true;
// }
// }
// }
//2.题解大神解法
int i=n-1,j=0;
while(i>=0 && j<m){
if(matrix[i][j]>target){//此时target在当前元素的上方,所以消去第i行
i--;
}else if(matrix[i][j]<target){//此时target在当前元素的右方,所以消去第j列
j++;
}else{
return true;
}
}
return false;
}
}