作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 动态规划 日期 题目地址:https://leetcode-cn.com/problems/the-masseuse-lcci/ 题目描述 一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接.在每次预约服务之间要有休息时间,因此她不能接受相邻的预约.给定一个预约请求序列,替按摩师找到最优的预约集合(总预约时间最长),返回总的分钟数.…
题目: 一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接.在每次预约服务之间要有休息时间,因此她不能接受相邻的预约.给定一个预约请求序列,替按摩师找到最优的预约集合(总预约时间最长),返回总的分钟数. 注意:本题相对原题稍作改动 示例 1: 输入: [1,2,3,1] 输出: 4 解释: 选择 1 号预约和 3 号预约,总时长 = 1 + 3 = 4. 示例 2: 输入: [2,7,9,3,1] 输出: 12 解释: 选择 1 号预约. 3 号预约和 5 号预约,总时长 =…
leetcode面试题 17.16. 按摩师 又一道动态规划题目 动态规划的核心就是总结出一个通行的方程. 但是这道题似乎不太适合使用递归的方式. 所以使用for循环遍历数组. class Solution { public int massage(int[] nums) { if(nums.length==0)return 0; if (nums.length==1)return nums[0]; //动态规划,这个采用了分类讨论的思想 //[2,7,9,3,1]为例 //如果你在7的位置上.…
题目背景 在洛谷中,打卡不只是一个简单的鼠标点击动作,通过每天在洛谷打卡,可以清晰地记录下自己在洛谷学习的足迹.通过每天打卡,来不断地暗示自己:我又在洛谷学习了一天,进而帮助自己培养恒心.耐心.细心.此外,通过打卡,还可以获取经验值奖励,经验值的多少在一定程度上反映了你在洛谷的资历和成就.通过打卡累积活跃值,渐渐升级,会让你感觉“离神犇越来越近了”. 题目描述 洛谷的打卡系统与其他网站的打卡系统一样,连续”打卡天数越多,每次打卡获得的奖励也就越多,同时连续天数加上一天.然而,于其他网站只要一天不…
1.一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致. 2.使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变? 使用final关键字修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内容还是可以改变的.例如,对于如下语句: final StringBuffer a=new StringBuffer("immutable");执…
1.JDK和JRE的区别是什么? Java运行时环境(JRE)是将要执行Java程序的Java虚拟机.它同时也包含了执行applet需要的浏览器插件.Java开发工具包(JDK)是完整的Java软件开发包,包含了JRE,编译器和其他的工具(比如:JavaDoc,Java调试器),可以让开发者开发.编译.执行Java应用程序. 2.集合框架中的泛型有什么优点?Java1.5引入了泛型,所有的集合接口和实现都大量地使用它.泛型允许我们为集合提供一个可以容纳的对象类型,因此,如果你添加其它类型的任何元…
1.Volatile和Synchronized不同点 (1).volatile只能作用于变量,使用范围较小.synchronized可以用在变量.方法.类.同步代码块等,使用范围比较广. (2).volatile只能保证可见性和有序性,不能保证原子性.而可见性.有序性.原子性synchronized都可以包证. (3).volatile不会造成线程阻塞.synchronized可能会造成线程阻塞. java多线程中的原子性.可见性.有序性 (1).原子性:是指线程的多个操作是一个整体,不能被分割…
1.什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”?Java虚拟机是一个可以执行Java字节码的虚拟机进程.Java源文件被编译成能被Java虚拟机执行的字节码文件.Java被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译.Java虚拟机让这个变为可能,因为它知道底层硬件平台的指令长度和其他特性.jdk包括运行环境(javac)和开发环境(jvm) 2.Java中的方法覆盖(Overriding)和方法重载(Overloading)是…
LCP 19.秋叶收藏集 题目链接 算法 动态规划 时间复杂度O(n) 1.题目要求最终形成[红.黄.红]三部分,每部分数量可以不相等,问最终调整操作数量最小是多少.这道题一开始考虑暴力去做,枚举两个分界点,即红黄,黄红之间的分界点的位置,但由于长度是1e5,时间复杂度为O(n^2)级别,故此法作废. 2.通过查看官方题解,了解到这道题可以使用动态规划去做,可以将时间复杂度优化到O(n)级别,为方便查阅复习,现结合自己的理解写下该题解.具体如下: 可以定义一个数组f[i][j],表示符合要求的最…
121. 买卖股票的最佳时机(简单) [分类]:模拟.思维 [题解]:可以用O(n)的复杂度完成,只需要在遍历的时候记录到当前位置为止买入股票的最小价格minn,再维护一个当前卖出股票价(a-minn)的最大值即可. [代码]: C++: class Solution { public: int maxProfit(vector<int>& prices) { int minn = 0x3f3f3f3f; int ans = 0; for(int i = 0; i < price…