【2】好未来JAVA开发工程师部分笔试题解析

编程题

1.降序的子数组最大元素和

给你一个正整数组成的数组nums,返回nums中一个降序子数组的最大可能元素和。

子数组是数组中的一个连续数字序列。

已知子数组[nums l, nums l+1, … , nums r-1, nums r],若对所有l (1<=i<r),nums i>nums i+1都成立,则称这一子数组为降序子数组。注意,大小为1的子数组也视作降序子数组。

补充说明

1 <= nums.length <= 100

1<= nums[i]<= 100

示例1

输入

[50,10,20,30,5,10]

输出

60

说明

[50,10]是元素和最大的降序子数组,最大元素和为60。

示例2

输入

[50,30,20]

输出

100

说明
[50,30,20]是元素和最大的降序子数组,最大元素和为100。

题解
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();int[] arr = new int[n];// temp 用于临时存储当前递减子序列的和int temp = 0;// sum 用于存储最大的递减子序列的和,最终结果int sum = 0;for (int i = 0; i &lt; n; i++) {arr[i] = scanner.nextInt();}// ptrIndex 作为指针,遍历数组 arrint ptrIndex = 0;// 当指针 ptrIndex 还在数组范围内时,循环继续while (ptrIndex &lt;= n - 1) {// 将当前指针指向的元素值赋给 temp,作为当前递减子序列的起始值temp = arr[ptrIndex];// 内层循环:寻找从 ptrIndex 开始的最长递减子序列while (ptrIndex &lt; n - 1 &amp;&amp; arr[ptrIndex] &gt; arr[ptrIndex + 1]) {ptrIndex++;// 将新的元素值加到 temp 中,更新当前递减子序列的和temp += arr[ptrIndex];}// 递减子序列结束,指针向后移动一位,开始寻找下一个递减子序列ptrIndex++;//更新最大的递减子序列的和 sumif (sum &lt; temp) {sum = temp;}}System.out.println(sum);scanner.close();}
}

2.覆盖房屋的最小加热半径(leetcode475)

冬季已经来临。你的任务是设计一个有固定加热半径的供暖器向所有房屋供暖。
在加热器的加热半径范围内的每个房屋都可以获得供暖。

现在,给出位于一条水平线上的房屋houses和供暖器heaters的位置,请你找出并返回可以覆盖所有房屋的最小加热半径。

注意

所有供暖器heaters都遵循你的半径标准,加热的半径也—样。

示例1

输入

[1,2,3],[2]

输出

1

示例2

输入

[1,2,3,4],[1,4]

输出

1

题解

import java.util.Arrays;public class Main {public int findRadius(int[] houses, int[] heaters) {// 1. 将供暖器位置数组排序,方便使用二分查找Arrays.sort(heaters);// 2. 初始化最小加热半径为 0int radius = 0;// 3. 遍历每个房屋for (int house : houses) {// 4. 使用二分查找找到距离当前房屋最近的供暖器位置int heaterIndex = findNearestHeater(heaters, house);// 5. 计算当前房屋需要的加热半径int currentRadius = Math.abs(heaters[heaterIndex] - house);// 6. 更新最小加热半径radius = Math.max(radius, currentRadius);}// 7. 返回最小加热半径return radius;}private int findNearestHeater(int[] heaters, int house) {int left = 0;int right = heaters.length - 1;int ans = 0; //存储下标while(left &lt;= right){int mid = left + (right - left) / 2;if(heaters[mid] == house){return mid;} else if(heaters[mid] &lt; house){left = mid + 1;} else {right = mid -1;}ans = left;}if (ans == 0) {return 0;  //房屋在供暖器左侧,第一个供暖器最近} else if (ans == heaters.length) {return heaters.length - 1; //房屋在所有供暖器右侧,最后一个供暖器最近} else {//比较房屋到左右两个供暖器的距离,选择最近的供暖器if(Math.abs(heaters[ans] - house) &lt; Math.abs(heaters[ans -1] - house)){return ans;} else {return ans -1;}}}
}

3.鸡蛋掉落(leetcode887)

给你k枚相同的鸡蛋,并可以使用一栋从第1层到第n层共有n层楼的建筑。

已知存在楼层f,满足0<=f<=n,任何从高于f的楼层落下的鸡蛋都会碎,从f楼层或比它低的楼层落下的鸡蛋都不会破。

每次操作,你可以取一枚没有碎的鸡蛋并把它从任一楼层x扔下(满足1<=x<=n)。如果鸡蛋碎了,你就不能再次使用它。如果某枚鸡蛋扔下后没有摔碎,则可以在之后的操作中重复使用这枚鸡蛋。

请你计算并返回要确定f确切的值的最小操作次数是多少?

补充说明

提示

1<=k<=100

1<=n<=10^4

示例1

输入

1,2

输出

2

说明

输入:

k=1,n=2

输出:

2

解释

鸡蛋从1楼掉落。如果它碎了,肯定能得出f=0。
否则,鸡蛋从2楼掉落。如果它碎了,肯定能得出f=1。

如果它没碎,那么肯定能得出f=2。
因此,在最坏的情况下我们需要移动2次以确定f是多少。

示例2

输入

2,6

输出

3

示例3

输入

3,14

输出

4

题解

public class Main {public int superEggDrop(int k, int n) {// dp[i][j] 表示 i 个鸡蛋,j 层楼时,最坏情况下的最少尝试次数int[][] dp = new int[k + 1][n + 1];// 初始化:// 0 层楼,无论多少个鸡蛋,都不需要尝试for (int i = 1; i &lt;= k; i++) {dp[i][0] = 0;}// 1 个鸡蛋,j 层楼,最坏情况要尝试 j 次for (int j = 1; j &lt;= n; j++) {dp[1][j] = j;}// 状态转移:// 从 2 个鸡蛋,2 层楼开始计算for (int i = 2; i &lt;= k; i++) {for (int j = 1; j &lt;= n; j++) {dp[i][j] = Integer.MAX_VALUE; // 初始化为最大值// 二分查找优化尝试的楼层,寻找最优解int left = 1, right = j;while (left &lt;= right) {int mid = left + (right - left) / 2;// 鸡蛋碎了:需要在 mid-1 层楼往下寻找,鸡蛋数量减少 1int broken = dp[i - 1][mid - 1];// 鸡蛋没碎:需要在 j-mid 层楼往上寻找,鸡蛋数量不变int notBroken = dp[i][j - mid];// 取最坏情况下的尝试次数int temp = Math.max(broken, notBroken) + 1;// 更新 dp[i][j],取最小值dp[i][j] = Math.min(dp[i][j], temp);// 二分查找,调整方向if (broken &gt; notBroken) {right = mid - 1; // 碎了的情况代价更大,尝试往低楼层找} else {left = mid + 1; // 没碎的情况代价更大,尝试往高楼层找}}}}// 返回 k 个鸡蛋,n 层楼时,最坏情况下的最少尝试次数return dp[k][n];}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/27603.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Goby 漏洞安全通告| Ollama /api/tags 未授权访问漏洞(CNVD-2025-04094)

漏洞名称&#xff1a;Ollama /api/tags 未授权访问漏洞&#xff08;CNVD-2025-04094&#xff09; English Name&#xff1a;Ollama /api/tags Unauthorized Access Vulnerability (CNVD-2025-04094) CVSS core: 6.5 风险等级&#xff1a; 中风险 漏洞描述&#xff1a; O…

Linux命令超级汇总

文件和目录操作 命令语法常用选项及说明lsls [选项] [目录名]- -l&#xff1a;以长格式显示文件和目录信息 - -a&#xff1a;显示所有文件&#xff0c;包括隐藏文件 - -h&#xff1a;与 -l 配合&#xff0c;以人类可读的方式显示文件大小 - -R&#xff1a;递归显示子目录内容cd…

Python 爬取唐诗宋词三百首

你可以使用 requests 和 BeautifulSoup 来爬取《唐诗三百首》和《宋词三百首》的数据。以下是一个基本的 Python 爬虫示例&#xff0c;它从 中华诗词网 或类似的网站获取数据并保存为 JSON 文件。 import requests from bs4 import BeautifulSoup import json import time# 爬取…

14. LangChain项目实战1——基于公司制度RAG回答机器人

教学视频&#xff1a; 12. 基于Gradio搭建基于公司制度RAG_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV11VXRYTErZ/ 环境配置&#xff1a; python版本&#xff1a;3.10.8 服务器&#xff1a;Ubuntu 依赖包requirements.txt文件内容&#xff1a; aiofiles23.2.1 …

香港首个人工智能大模型HKGAI V1发布:粤语AI时代正式开启

2月25日&#xff0c;香港科技创新领域迎来了一项里程碑式的成就——由香港特区政府重点创科项目“InnoHK 创新香港研发平台”慷慨资助的香港生成式人工智能研发中心(HKGAI)正式揭晓了其倾力打造的HKGAI V1大模型。这一创举不仅标志着香港在人工智能发展道路上迈出了坚实的一步&…

简易的微信聊天网页版【项目测试报告】

文章目录 一、项目背景二、项目简介登录功能好友列表页面好友会话页面 三、测试工具和环境四、测试计划测试用例部分人工手动测试截图web自动化测试测试用例代码框架配置内容代码文件&#xff08;Utils.py&#xff09;登录页面代码文件&#xff08;WeChatLogin.py&#xff09;好…

QT播放视频保持视频宽高比消除黑边

QT播放视频保持视频宽高比消除黑边 1、问题 在播放视频的时候&#xff0c;由于框架的大小发生变化&#xff0c;导致视频出现黑边很不好看。 因此需要像一种方法消除黑边 2、处理 1、读取视频的宽高比 2、设置视频的Widget的大小固定&#xff0c;Widget的宽高比和视频宽高比…

Apache nifi demo 实验

Apache nifi 是个数据流系统&#xff0c;可以通过配置 自定义的流程来实现数据的转换。 比如可以配置一个流程&#xff0c;读取数据库里的数据&#xff0c;再转换&#xff0c;最后保存到本地文件。 这样可以来实现一些数据转换的操作&#xff0c;而不用特地编写程序来导入导出。…

蓝桥杯 - 每日打卡(类斐波那契循环数)

题目: 解题思路&#xff1a; 假设输入数值为number 分析题目&#xff0c;如果想要解决这个问题&#xff0c;我们需要实现两个方法&#xff0c;第一个检查number是否是类斐波那契&#xff0c;第二个是模拟1e7 - 0的过程&#xff0c;因为是求最大的&#xff0c;那么我们从1e7开始…

DeepSeek集成到VScode工具,让编程更高效

DeepSeek与VScode的强强联合&#xff0c;为编程效率树立了新标杆。 DeepSeek&#xff0c;一款卓越的代码搜索引擎&#xff0c;以其精准的索引和高速的检索能力&#xff0c;助力开发者在浩瀚的代码海洋中迅速定位关键信息。 集成至VScode后&#xff0c;开发者无需离开熟悉的编辑…

RAG组件:向量数据库(Milvus)

在当前大模型盛行的时代&#xff0c;大模型的垂类微调、优化成为产业落地、行业应用的关键&#xff1b;RAG技术应运而生&#xff0c;主要解决大模型对专业知识、实效性知识欠缺的问题&#xff1b; RAG的核心工作逻辑是将专业知识、实效知识等大模型欠缺的知识进行收集、打包、保…

2022java面试总结,1000道(集合+JVM+并发编程+Spring+Mybatis)的Java高频面试题

1、面试题模块汇总 面试题包括以下十九个模块&#xff1a; Java 基础、容器、多线程、反射、对象拷贝、Java Web 模块、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、Mybatis、RabbitMQ、Kafka、Zookeeper、MySql、Redis、JVM 。如下图所示…

英码科技携昇腾DeepSeek大模型一体机亮相第三届北京人工智能产业创新发展大会

2025年2月28日&#xff0c;第三届北京人工智能产业创新发展大会在国家会议中心隆重开幕。本届大会以"好用、易用、愿用——以突破性创新加速AI赋能千行百业”为主题&#xff0c;重点展示人工智能技术创新成果与产业化应用实践。作为昇腾生态的APN伙伴&#xff0c;英码科技…

(链表 删除链表的倒数第N个结点)leetcode 19

设空结点指向head便于插入和删除结点 考虑特殊情况 head结点被删除 a结点仅用来测试长度&#xff0c;找到目标结点的位置 b结点为空结点指向head返回值 cur用来删除目标值&#xff08;特殊情况 目标值为head 这时curb) 则开始就将cur初始化为b开始遍历 /*** Definition fo…

Android Studio 新版本Gradle发布本地Maven仓库示例

发布代码到JitPack示例&#xff1a;https://blog.csdn.net/loutengyuan/article/details/145938967 以下是基于 Android Studio 24.2.2&#xff08;Gradle 8.10.2 AGP 8.8.0 JDK17&#xff09; 的本地 Maven 仓库发布示例&#xff0c;包含aar和jar的不同配置&#xff1a; 1.…

[今年毕业设计]最新最全最有创意的基于云计算的计算机专业毕设选题精选推荐汇总建议收藏!!

文章目录 前言基于云计算的毕业设计选题毕设作品展示 前言 2025全新毕业设计项目 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云等平台优质作者。 &#x1f447;&#x1f3fb; 精彩专栏 推荐订阅&#x1f4…

coze生成的工作流,发布后,利用cmd命令行执行。可以定时发日报,周报等。让他总结你飞书里面的表格。都可以

coze生成的工作流&#xff0c;发布后&#xff0c;利用cmd命令行执行。可以定时发日报&#xff0c;周报等。让他总结你飞书里面的表格。都可以。 很简单。 准备工作&#xff0c;先发布你的工作流&#xff0c;和发布应用。 然后&#xff0c;点击扣子API 。 申请一个&#xff0…

安防监控/视频集中存储EasyCVR视频汇聚平台如何配置AI智能分析平台的接入?

EasyCVR安防视频监控平台不仅支持AI边缘计算智能硬件设备的接入&#xff0c;还能快速集成AI智能分析平台&#xff0c;接收来自智能分析平台或设备的AI告警信息&#xff0c;如烟火检测、周界入侵检测、危险区域闯入检测、安全帽/反光衣佩戴检测等。 本文将详细介绍如何在EasyCVR…

以1.7K深圳小区房价为例,浙大GIS实验室使用注意力机制挖掘地理情景特征,提升空间非平稳回归精度

地理加权回归 (Geographically Weighted Regression, GWR) 是一种广泛应用于地理空间分析的统计方法&#xff0c;用于捕捉地理现象的空间非平稳性&#xff08;即空间异质性&#xff09;。传统 GWR 通过为每个观测点分配权重来反映其对回归参数的影响&#xff0c;这些权重通常基…

【JavaEE】线程安全

【JavaEE】线程安全 一、引出线程安全二、引发线程安全的原因三、解决线程安全问题3.1 synchronized关键字&#xff08;解决修改操作不是原子的&#xff09;3.1.1 synchronized的特性3.1.1 synchronized的使用事例 3.2 volatile 关键字&#xff08;解决内存可见性&#xff09; …