服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Java教程 - 剑指Offer之Java算法习题精讲二叉搜索树与数组查找(2)

剑指Offer之Java算法习题精讲二叉搜索树与数组查找(2)

2022-10-11 14:17明天一定. Java教程

跟着思路走,之后从简单题入手,反复去看,做过之后可能会忘记,之后再做一次,记不住就反复做,反复寻求思路和规律,慢慢积累就会发现质的变化

题目一

数组题——查找数组中交集

根据给定的两个数组按照指定条件查找它们的交集并返回

具体题目如下

剑指Offer之Java算法习题精讲二叉搜索树与数组查找(2)

解法

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class Solution {
    public int[] intersection(int[] nums1, int[] nums2) {
        int[] a = new int[1000];
        HashSet<Integer> set = new HashSet<Integer>();
        for(int i = 0;i<nums1.length;i++){
            if(a[nums1[i]]==0){
                a[nums1[i]]=1;
            }
        }
        for(int i = 0;i<nums2.length;i++){
            if(a[nums2[i]]!=0){
                set.add(nums2[i]);
            }
        }
        int[] w = new int[set.size()];
        int p = 0;
        Iterator<Integer> iterator = set.iterator();
        while (iterator.hasNext()){
            w[p] = iterator.next();
            p++;
        }
        return w;       
    }
}

 题目二

数组题——查找数组中交集

根据给定的两个数组按照指定条件查找它们的交集并返回

具体题目如下

剑指Offer之Java算法习题精讲二叉搜索树与数组查找(2)

解法

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Solution {
    public int[] intersect(int[] nums1, int[] nums2) {
        int[] a = new int[1001];
        ArrayList<Integer> list = new ArrayList<Integer>();
        for(int i = 0;i<nums1.length;i++){
            a[nums1[i]]+=1;
        }
        for(int i = 0;i<nums2.length;i++){
            if(a[nums2[i]]>0){
                list.add(nums2[i]);
                a[nums2[i]]--;
            }
        }
        int[] w = new int[list.size()];
        for(int j = 0;j<w.length;j++){
            w[j] = list.get(j);
        }
        return w;        
    }
}

题目三

概率题——猜数字

根据给定的猜数字规则编写函数比较猜数大小

具体题目如下

剑指Offer之Java算法习题精讲二叉搜索树与数组查找(2)

 解法

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
/**
 * Forward declaration of guess API.
 * @param  num   your guess
 * @return       -1 if num is lower than the guess number
 *                1 if num is higher than the guess number
 *               otherwise return 0
 * int guess(int num);
 */
 
public class Solution extends GuessGame {
    public int guessNumber(int n) {
        int left = 1;
        int right = n;
        while(left<=right){
            int mid = left+(right-left)/2;
            if(guess(mid)==-1){
                right = mid-1;
            }
            if(guess(mid)==1){
                left = mid+1;
            }
            if(guess(mid)==0){
                return mid;
            }
        }
        return 0;
    }
}

到此这篇关于剑指Offer之Java算法习题精讲二叉搜索树与数组查找的文章就介绍到这了,更多相关Java 二叉搜索树内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/wai_58934/article/details/123167743

延伸 · 阅读

精彩推荐