剑指Offer之Java算法习题精讲数组与二叉树

 更新时间:2022年03月22日 09:34:09   作者:明天一定.  
跟着思路走,之后从简单题入手,反复去看,做过之后可能会忘记,之后再做一次,记不住就反复做,反复寻求思路和规律,慢慢积累就会发现质的变化

题目一

二叉树题——数组转二叉树

根据给定的数组按照指定条件转换为高度平衡的二叉搜索树

具体题目如下

 解法

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public TreeNode sortedArrayToBST(int[] nums) {
        return method(nums,0,nums.length-1);
    }
    public TreeNode method(int[] nums,int lf,int rg){
        if(lf>rg){
            return null;
        }
        int mid = lf+(rg-lf)/2;
        TreeNode root = new TreeNode(nums[mid]);
        root.left = method(nums,lf,mid-1);
        root.right = method(nums,mid+1,rg);
        return root;        
    }
}

题目二

数组题——验证数组中数值

根据给定的数组验证数组中数值是否出现多次

具体题目如下

 解法

class Solution {
    public boolean containsDuplicate(int[] nums) {
       HashSet<Integer> set = new HashSet<Integer>();
       for(int i = 0;i<nums.length;i++){
           if(!set.add(nums[i])){
               return true;
           }
           set.add(nums[i]);
       }
       return false;
    }
}

题目三

数组题——验证数组中数值

根据给定的数组验证数组中数值是否存在重复

具体题目如下

 解法

class Solution {
    public boolean containsNearbyDuplicate(int[] nums, int k) {
        Map<Integer, Integer> map = new HashMap<Integer, Integer>();
        int length = nums.length;
        for (int i = 0; i < length; i++) {
            int num = nums[i];
            if (map.containsKey(num) && i - map.get(num) <= k) {
                return true;
            }
            map.put(num, i);
        }
        return false;
    }
}

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

相关文章

  • java使用计算md5校验码方式比较两个文件是否相同

    java使用计算md5校验码方式比较两个文件是否相同

    MD5文件效验码是一个判断文件是否是相同文件的途径,通过比较两个文件的Md5效验码是否相同来精确判断两个文件是否相同
    2014-04-04
  • Java中volatile 的作用

    Java中volatile 的作用

    这篇文章主要介绍了Java中volatile 的作用,volatile是Java并发编程的重要组成部分,主要作用是保证内存的可见性和禁止指令重排序,下文更多对volatile作用的介绍,需要的小伙伴可以参考一下
    2022-05-05
  • Spring Boot如何监控SQL运行情况?

    Spring Boot如何监控SQL运行情况?

    Druid是Java语言中最好的数据库连接池,下面这篇文章主要给大家介绍了关于Spring Boot如何监控SQL运行情况的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-04-04
  • Java基础教程之Hello World到面向对象

    Java基础教程之Hello World到面向对象

    这篇文章主要介绍了Java基础教程之Hello World,Java入门教程,讲解了Java中的必备语法、编译与运行知识、数据类型等,需要的朋友可以参考下
    2014-08-08
  • Spring AOP事务管理的示例详解

    Spring AOP事务管理的示例详解

    这篇文章将通过转账案例为大家详细介绍一下Spring AOP是如何进行事务管理的,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2022-06-06
  • Java设计模式之外观模式解析

    Java设计模式之外观模式解析

    这篇文章主要介绍了Java设计模式之外观模式解析,外观模式提供了一个统一的接口,用来访问子系统中的一群接口,外观定义了一个高层接口,让子系统更容易使用,需要的朋友可以参考下
    2024-01-01
  • Java使用Apache compress实现文件夹压缩成Zip包

    Java使用Apache compress实现文件夹压缩成Zip包

    Apache common提供了很多实用的工具包,这篇文章主要来和大家介绍一下Java如何使用Apache compress包实现文件夹压缩成Zip包,希望对大家有所帮助
    2024-01-01
  • java 数组实现学生成绩统计教程

    java 数组实现学生成绩统计教程

    这篇文章主要介绍了java 数组实现学生成绩统计教程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • Java如何将Excel数据导入到数据库

    Java如何将Excel数据导入到数据库

    这篇文章主要为大家详细介绍了Java将Excel数据导入到数据库的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10
  • IDEA启动Tomcat报Unrecognized option: --add-opens=java.base/java.lang=ALL-UNNAMED的解决方法

    IDEA启动Tomcat报Unrecognized option: --add-opens=java

    这篇文章主要为大家介绍了解决IDEA启动Tomcat报Unrecognized option: --add-opens=java.base/java.lang=ALL-UNNAMED的方法,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-08-08

最新评论