挑战春招找到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] - 1nums[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的热情继续努力。

八股文来自:面试鸭

相关推荐
jay神16 小时前
基于SpringBoot的宠物生命周期信息管理系统
java·数据库·spring boot·后端·web开发·宠物·管理系统
万亿少女的梦16817 小时前
基于SpringBoot的在线考试管理系统设计与实现
java·spring boot·后端
m0_7381207217 小时前
渗透测试——Djinn1靶场详细渗透提权过程讲解(绕过黑名单限制,命令执行反弹shell,pyc反编译,代码白盒分析,python沙盒逃逸)
开发语言·python·php
一勺菠萝丶17 小时前
如何在 Linux 服务器上使用 Speedtest 官方 CLI 测试带宽(小白教程)
java·服务器·前端
web守墓人17 小时前
【go语言】go语言实现go-torch, 完成Lenet-5的搭建,训练,以及pth和onnx模型导出
开发语言·后端·golang
TEC_INO17 小时前
Linux50:ROCKX+RV1126视频流检测人脸
开发语言·前端·javascript
平凡但不平庸的码农17 小时前
Go 语言常用标准库详解
开发语言·后端·golang
下载居17 小时前
Node.js(Javascript运行环境) 26.1
开发语言·javascript·node.js
范什么特西17 小时前
第一个Mybatis
java·开发语言·mybatis
下次再写17 小时前
【Redis实战】深入理解Redis缓存策略:从原理到Spring Boot实践
java·spring boot·redis·缓存穿透·缓存击穿·分布式缓存·缓存策略