likes
comments
collection
share

⚡每日算法&面试题⚡一起肥学

作者站长头像
站长
· 阅读数 26

⚽题外话

昨天有小伙伴找我,问有很多题不会怎么办?了解完之后发现是数据结构这块还不太了解,很多知识不知道怎么建链表和栈都不太了解。我建议还是从数据结构看看把这块补上来我们再慢慢来刷题,至于怎么补如果小伙伴没有好的计划也可以来私聊我,我给大家找找资源。

⚽算法题

给你一个非负整数数组 nums ,你最初位于数组的第一个位置。

数组中的每个元素代表你在该位置可以跳跃的最大长度。

你的目标是使用最少的跳跃次数到达数组的最后一个位置。

假设你总是可以到达数组的最后一个位置。

示例 1:

输入: nums = [2,3,1,1,4]
输出: 2
解释: 跳到最后一个位置的最小跳跃数是 2
     从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。
示例 2:

输入: nums = [2,3,0,1,4]
输出: 2
提示:

1 <= nums.length <= 104
0 <= nums[i] <= 1000

⚽一点点思路

这个题你需要注意再哪一个位置,这个位置上的数为你的最大跳跃长度而不是必须长度。nums = [2,3,1,1,4]为例再下标为零的时候值为二,你可以跳小于等于2的长度。不知道为啥我一下子想起来了图论里的prim算法。哈哈哈这当然是我瞎想的了,我们今天的所用的解法被世人称为贪心算法,因为它需要再众多结果中找到最佳的那个。

⚽源码和详解

class Solution {
    public int jump(int[] nums) {
        int length = nums.length;
        int end = 0;
        //记录最大的位置是为了得到所谓的贪心最佳值,因为我们要找
        //最短的跳跃当然是数值越大越好了
        int maxPosition = 0; 
        int steps = 0;
        for (int i = 0; i < length - 1; i++) {
        //这里要遍历数组每一个元素来进行比较找到值最大的那个
            maxPosition = Math.max(maxPosition, i + nums[i]); 
            //用来记录跳跃的步数条件是遍历的位置等于之前跳跃的值的位置
            if (i == end) {
                end = maxPosition;
                steps++;
            }
        }
        return steps;
    }
}

⚽面试题

关于Mybatis的面试知识点基础类

1、什么是Mybatis? Mybatis是一个半ORM(对象关系映射)框架,它内部封装了JDBC,开发时只需要关注SQL语句本身,不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。程序员直接编写原生态sql,可以严格控制sql执行性能,灵活度高。

MyBatis 可以使用 XML 或注解来配置和映射原生信息,将 POJO映射成数据库中的记录,避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。

通过xml 文件或注解的方式将要执行的各种 statement 配置起来,并通过java对象和 statement中sql的动态参数进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射为java对象并返回。(从执行sql到返回result的过程)。

2、Mybaits的优点: 基于SQL语句编程,相当灵活,不会对应用程序或者数据库的现有设计造成任何影响,SQL写在XML里,解除sql与程序代码的耦合,便于统一管理;提供XML标签,支持编写动态SQL语句,并可重用。

与JDBC相比,减少了50%以上的代码量,消除了JDBC大量冗余的代码,不需要手动开关连接;

很好的与各种数据库兼容(因为MyBatis使用JDBC来连接数据库,所以只要JDBC支持的数据库MyBatis都支持)

能够与Spring很好的集成;

提供映射标签,支持对象与数据库的ORM字段关系映射;提供对象关系映射标签,支持对象关系组件维护。

3、MyBatis框架的缺点: SQL语句的编写工作量较大,尤其当字段多、关联表多时,对开发人员编写SQL语句的功底有一定要求。

SQL语句依赖于数据库,导致数据库移植性差,不能随意更换数据库。