剑指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;
    }
}
上一篇:Missing Number I


下一篇:Solution of CF1108C