剑指offer计划4(查找算法简单版)---java
1.1、题目1
剑指 Offer 03. 数组中重复的数字
1.2、解法
摊牌了,我是hash表忠实粉丝,好多题用hash都简单很多,
用的舒服,写的放心~
1.3、代码
class Solution {
public int findRepeatNumber(int[] nums) {
Set h = new HashSet();
for(int i=0;i<nums.length;i++){
if(h.contains(nums[i]))
return nums[i];
h.add(nums[i]);
}
return nums[0];
}
}
2.1、题目2
剑指 Offer 53 - I. 在排序数组中查找数字 I
2.2、解法
今天的题,~ememmmmmm,有点太过简单了
当然,也可以用 二分查找。但是哪个你弄不好还得搞半天,
简单暴力,最为致命。
哈哈哈哈哈哈,我懒得搞啥了,这种东西简单的写法就行。
2.3、代码
class Solution {
public int search(int[] nums, int target) {
int n=0;;
for(int i = 0 ;i<nums.length;i++){
if(nums[i]==target)
n++;
}
return n;
}
}
3.1、题目3
剑指 Offer 53 - II. 0~n-1中缺失的数字
3.2、解法
这题就更简单了,直接循环
创个数组,查哪个为false就是没有的数字
不要学我这么写,最好还是用二分,
懒得整二分查找了~~~~~~~~~~~~~~~~~~,hhhhhhh
3.3、代码
class Solution {
public int missingNumber(int[] nums) {
boolean []b = new boolean[nums.length+1];
for(int i=0;i<nums.length;i++){
b[nums[i]]=true;
}
for(int i=0;i<b.length;i++){
if(b[i]==false) return i;
}
return -1;
}
}