⚡每日算法&面试题⚡一起肥学1️⃣2️⃣

Posted 肥学

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了⚡每日算法&面试题⚡一起肥学1️⃣2️⃣相关的知识,希望对你有一定的参考价值。

🌟算法题

给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。

你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。

示例1:

输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
输出:[[7,4,1],[8,5,2],[9,6,3]]

示例二:

输入:matrix = [[5,1,9,11],[2,4,8,10],[13,3,6,7],[15,14,12,16]]
输出:[[15,13,2,5],[14,3,4,1],[12,6,8,9],[16,7,10,11]]
示例 3:

输入:matrix = [[1]]
输出:[[1]]
示例 4:

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

matrix.length == n
matrix[i].length == n
1 <= n <= 20
-1000 <= matrix[i][j] <= 1000

🌟一点点思路

千万别去想着真的把数组里的某个元素给移到那个位置,这样太麻烦而且题目也明确说了。

你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。

所以我们来看看规律

是不是发现了对于矩阵中第 ii 行的第 jj 个元素,在旋转后,它出现在倒数第 ii 列的第 jj 个位置。
好了我们来代码实现

🌟源码和详解

class Solution {
    public void rotate(int[][] matrix) {
    //得到行数
        int n = matrix.length;
        //建立一个二维数组
        int[][] matrix_new = new int[n][n];
        //接下来的都是为了这句话对于矩阵中第 ii 行的第 jj 个元素,
        //在旋转后,它出现在倒数第 ii 列的第 jj 个位置
        for (int i = 0; i < n; ++i) {
            for (int j = 0; j < n; ++j) {
                matrix_new[j][n - i - 1] = matrix[i][j];
            }
        }
        for (int i = 0; i < n; ++i) {
            for (int j = 0; j < n; ++j) {
                matrix[i][j] = matrix_new[i][j];
            }
        }
    }
}

🌟面试题

面试官:说一下Java反射机制的应用场景
首先了解反射的优势和劣势

反射的优势和劣势 个人理解,反射机制实际上就是上帝模式,如果说方法的调用是 Java
正确的打开方式,那反射机制就是上帝偷偷开的后门,只要存在对应的class,一切都能够被调用。

那上帝为什么要打开这个后门呢?这涉及到了静态和动态的概念

静态编译:在编译时确定类型,绑定对象 动态编译:运行时确定类型,绑定对象
两者的区别在于,动态编译可以最大程度地支持多态,而多态最大的意义在于降低类的耦合性,因此反射的优点就很明显了:解耦以及提高代码的灵活性。

因此,反射的优势和劣势分别在于:

优势

运行期类型的判断,动态类加载:提高代码灵活度

劣势

性能瓶颈:反射相当于一系列解释操作,通知 JVM 要做的事情,性能比直接的java代码要慢很多

应用场景

JDBC 的数据库的连接 在JDBC 的操作中,如果要想进行数据库的连接,则必须按照以上的几步完成

通过Class.forName()加载数据库的驱动程序 (通过反射加载,前提是引入相关了Jar包)

通过 DriverManager 类进行数据库的连接,连接的时候要输入数据库的连接地址、用户名、密码

通过Connection 接口接收连接


Spring 框架的使用

Spring 通过 XML 配置模式装载 Bean 的过程:

将程序内所有 XML 或 Properties 配置文件加载入内存中
Java类里面解析xml或properties里面的内容,得到对应实体类的字节码字符串以及相关的属性信息
使用反射机制,根据这个字符串获得某个类的Class实例 动态配置实例的属性

特别介绍

📣小白练手专栏,适合刚入手的新人欢迎订阅编程小白进阶

📣python有趣练手项目里面包括了像《机器人尬聊》《恶搞程序》这样的有趣文章,可以让你快乐学python练手项目专栏

📣另外想学JavaWeb进厂的同学可以看看这个专栏:传送们

📣这是个面试和考研的算法练习我们一起加油上岸之路

资料领取和详解

以上是关于⚡每日算法&面试题⚡一起肥学1️⃣2️⃣的主要内容,如果未能解决你的问题,请参考以下文章

⚡每日算法&面试题⚡一起肥学1️⃣0️⃣( 含 HashMap& TreeMap)

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

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

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

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

⚡每日肥学⚡——算法&面试题2️⃣