挑战春招找到java后端实习第一天(1.1)

八股文

1.java中有哪些集合类请简单介绍一下

集合类分为两大类Collection和Map。前者是对象的集合,后者是键值对。

Collection分为List,Set,Queue三个接口。

List有LinkedList,ArrayList,Vector

Set(不允许重复)有HashSet,TreeSet(元素有序),LinkedHashSet(维护插入顺序)

Queue有LinkedList,PriorityQueue。

Map有HashMap,LinkedHashMap,TreeMap(键值有序),HashTable,ConcurrentHashMap(后两个都不允许键值为null) 实现类。

接口和抽象类有什么区别

接口是like a,抽象类是is a

Java 抽象类和接口的区别,看这一篇就够了,全面解析 | 二哥的Java进阶之路

算法

740. 删除并获得点数

给你一个整数数组 nums ,你可以对它进行一些操作。

每次操作中,选择任意一个 nums[i] ,删除它并获得 nums[i] 的点数。之后,你必须删除 所有 等于 nums[i] - 1 和 nums[i] + 1 的元素。

开始你拥有 0 个点数。返回你能通过这些操作获得的最大点数。

示例 1:

复制代码
输入:nums = [3,4,2]
输出:6
解释:
删除 4 获得 4 个点数,因此 3 也被删除。
之后,删除 2 获得 2 个点数。总共获得 6 个点数。

示例 2:

复制代码
输入:nums = [2,2,3,3,3,4]
输出:9
解释:
删除 3 获得 3 个点数,接着要删除两个 2 和 4 。
之后,再次删除 3 获得 3 个点数,再次删除 3 获得 3 个点数。
总共获得 9 个点数。

提示:

  • 1 <= nums.length <= 2 * 104
  • 1 <= nums[i] <= 104

思路:这题看似有两个约束,但是如果把数组排序之后那就只用考虑前一个了,因为与打家劫舍的原理一致,如果前一个选中了那么后一个会给删掉,以此类推可以发现所有的都是按照规则去排,转化为顺序dp。

cnt记录每个元素出现几次,f\[\]1表示选择该元素的最大值,f\[\]0表示不选该元素的最大值

java 复制代码
class Solution {
    public int deleteAndEarn(int[] nums) {
        int cnt[]=new int[10001];
        int max=-1;
        for(int i:nums){
            cnt[i]++;
            max=Math.max(max,i);
        }
        int f[][]=new int[max+1][2];
        for(int i=1;i<=max;i++){
            f[i][1]=f[i-1][0]+cnt[i]*i;
            f[i][0]=Math.max(f[i-1][1],f[i-1][0]);
        }
        return Math.max(f[max][0],f[max][1]);
    }
}

开心的事:跑完人生第一个五公里

不开心:暂时没有

思考:不能太晚睡觉,保持规律的作息,多去看望外婆。每天滚动复习前一天的知识点,明天开始做项目。新一年,新的开始,保持Day1的热情继续努力。

八股文来自:面试鸭

相关推荐
en.en..几秒前
Linux 进程退出exit(函数)
java·开发语言·算法
李游Leo2 分钟前
HarmonyOS 7 TaskPool + Node-API + zstd:Native 批量压缩任务的主线程隔离、进度回传与资源收口【鸿蒙心迹】
java·华为·harmonyos
Cx330❀3 分钟前
【Qt 进阶指南】详解 Qt 常用标准对话框与主窗口组件架构
开发语言·qt·ui·性能优化·架构·图形渲染
Light Gao4 分钟前
Encoder 与 Decoder 详解:从 Embedding 到 Seq2Seq 的完整数据流
java·开发语言·embedding
HZZD_HZZD5 分钟前
弱网下CoAP还省吗?合众致达Cat.1电表90天实测:MQTT重连流量占52%、续航差距从38%拉大到73%
开发语言·物联网·php·腾讯云
web打印社区8 分钟前
Windows 网页静默打印设置步骤:客户端、防火墙与联调清单
开发语言·前端·javascript·chrome·pdf·ecmascript
小师兄吃牛肉17 分钟前
什么是R语言?如何快速学习R语言
开发语言·学习·r语言
程序猿乐锅32 分钟前
【黑马点评 | 第十一篇】关注 Feed 流实现
java·数据库·redis·分布式·后端·缓存·maven
Evand J39 分钟前
【MATLAB例程】三维快速扩展随机树(RRT)路径规划与到达角(AOA)、到达时间差(TDOA)融合定位,附下载链接
开发语言·matlab·代码·定位·例程
执明wa41 分钟前
Android RecyclerView 实战:点击频道栏切换对应内容
android·开发语言·windows·microsoft·android studio