java,八股,cv,算法——双非研0四修之路day5
目录
昨日总结
- 内容跑空了……
- 背诵小林coding--Java基础面试题部分(4/4)
- 复现新文献对应的数据——配置环境(出现点问题)
- 代码随想录--长度最小的子数组 | 滑动窗口(自己写的跑超时了)
今日计划
- 跟进项目,学习反射、Java代理方式(代理对象)<二次>
- 背诵小林coding--Java集合面试篇(1/4)
- 继续解决一下环境问题,读一部分文献内容
- 代码随想录--螺旋矩阵||
算法——长度最小的子数组 | 滑动窗口
给定一个含有 n 个正整数的数组和一个正整数 target 。
找出该数组中满足其总和大于等于 target 的长度最小的 子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。
示例 1:
输入:target = 7, nums = [2,3,1,2,4,3]
输出:2
解释:子数组 [4,3]是该条件下的长度最小的子数组。
示例 2:
输入:target = 100, nums = [1,1,1,1,1,1,1,100]
输出:1
本人作答
双for循环暴力解,时间复杂度O(n^2)。
int minSubArrayLen(int target, int* nums, int numsSize) {
int res = INT_MAX;
for(int i = 0; i < numsSize; i++){
int sum = 0;
for(int j = i; j < numsSize; j++){
sum += nums[j];
if(sum >= target){
res = fmin (j - i + 1,res);
break;
}
}
}
return res == INT_MAX ? 0 : res;
}
运行结果超时。
标准作答
采用双指针移动窗口策略,时间复杂度O(n^2)。
for循环中用while而不是用if,原因是考虑到示例2的特殊情况。
int minSubArrayLen(int target, int* nums, int numsSize) {
int res = INT_MAX;
int i = 0;
int sum = 0;
for (int j = 0; j < numsSize; j++){
sum += nums[j];
while(sum >= target){
res = fmin(res, j - i + 1);
sum -= nums[i++];
}
}
return res == INT_MAX ? 0 : res;
}
昨日八股联想答案
- 什么是泛型
它允许类、接口和方法在定义时使用一个或多个类型参数,这些类型参数在使用时可以被指定为具体的类型。
- Java创建对象的方式
使用new关键字:通过new关键字直接调用类的构造方法来创建对象。
使用Class类的newInstance()方法:通过反射机制,可以使用Class类的newInstance()方法创建对象。
使用反序列化:通过将对象序列化到文件或流中,然后再进行反序列化来创建对象。
使用clone()方法:如果类实现了Cloneable接口,可以使用clone()方法复制对象。
- 什么是反射(后续详细学习一下)
Java 反射机制是在运行状态中,对于任意一个类,都能够知道这个类中的所有属性和方法,对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为 Java 语言的反射机制。
- 讲一下Java注解的原理(后续详细学习一下)
注解本质是一个继承了Annotation的特殊接口,其具体实现类是Java运行时生成的动态代理类。通过反射获取注解时,返回的是Java运行时生成的动态代理对象。通过代理对象调用自定义注解的方法,会最终调用AnnotationInvocationHandler的invoke方法。该方法会从memberValues这个Map中索引出对应的值。而memberValues的来源是Java常量池。
- 介绍一下异常
Java的异常体系主要基于两大类:Throwable类及其子类。Throwable有两个重要的子类:Error和Exception,它们分别代表了不同类型的异常情况。
- String、StringBuffer、StringBuilder的区别和联系
String一旦创建,内容无法更改、,每次修改都会生成一个新的对象,后两者不会
String因为不可变,线性安全。StringBuilder不是线性安全,适用于单线程环境。最后者线性安全,适用于多线程环境
如果字符串内容固定或不常变化,优先使用 String。如果需要频繁修改字符串且在单线程环境下,使用 StringBuilder。如果需要频繁修改字符串且在多线程环境下,使用 StringBuffer。
今日八股联想
- Lambda表达式
- Stream流
- 代理模式和适配器模式区别
- 如何实现序列化和反序列化
文献
配置了好长时间的环境,出现一系列问题。
下面是需要安装的软件库和对应的版本

注意注意注意!!! 在下载对应的库时,最好不要下载到base环境下,在你的acaconda中创建一个虚拟环境,安装到那里,下面是我切换之后的
在安装scipy==1.1.0安装报错Read timed out ,之后又从国内镜源下载,还是超时。之后又试了一些办法,(心态有点小崩),结果今天早上又试了一下,瞬间就下好了,如下面所示(总结起来就是你安装的时间也挺重要的)

本以为后续会很顺利,结果在安装另一个软件库时,没有搜索到对应版本,后续我又换了版本。
接踵而来的各个软件库的版本开始发生冲突, 后续我在找找对应适应的版本,不知道把原作者要求的版本改掉后,影不影响测试的数据


总结

更多推荐

所有评论(0)