算法题001:求数组可能的最大得分
题目
题目来源:牛客笔试
给定一个从 $0$ 开始的数组 $nums$ 和一个非负整数 $k$。
在一次操作中,你可以做以下操作:
- 选择一个之前未选择过的下标 $i$,范围为 $[0, nums.length - 1]$ 。
- 将 $nums[i]$ 替换为范围 $[nums[i] - k, nums[i] + k]$ 内的任意整数(包含两端)。
在应用任意次数的操作后,返回数组 $nums$ 的最大可能分数。
数组分数是“数组中最多的重复元素个数”
注意,你只能对每个下标应用一次操作。
Markdown 插入图片时自动拷贝——以 Typora 和 VS Code 为例
序言
随着 Markdown 的普及,使用传统文本编辑器写作的效率显得低下,尤其表现在一些复杂语法,比如插入表格,或者插入图片。
Typora 作为业界知名的 Markdown 编辑器,除了著名的『即时渲染』,也拥有很多方便书写 Markdown 的功能,比如插入图片时的自动保存:往一个 Markdown 文件(文本文件)中粘贴一张图片,该图片便会自动保存到指定路径,并且自动在 Markdown 中建立好引用。
对于经常用 Markdown 记笔记的我来说,这一功能应该成为业界的标准。但是,另一款常用的编辑器 —— VS Code —— 对这一功能的支持并不好。当然,我们也不应该苛求这样一款免费、通用的编辑器能够面面俱到。
需求
对于经常记笔记的用户,截图并插入 Markdown 是一个常见的需求。在这一操作的背后,有两个方面关乎着用户体验:1️⃣ 截图工具 2️⃣Markdown 编辑器。
在截图工具一致的情况下,Markdown 编辑器是决定用户体验的关键因素。下面我将展开介绍 3 种编辑器是如何插入图片的。
PotPlayer 启用 Nvidia 超分辨率
序言
Nvidia VSR (Video Super Resolution) 通过 AI 技术优化视频的画面质量,主要表现在锐化低分辨率的视频上。该技术最初只支持 Chrome 和 Edge 浏览器。
如何在本地视频播放器中体验这项技术?PotPlayer 最近发布了相关更新,支持了该技术。
PotPlayer 是目前数一数二的视频播放器,也是我的主力播放器。趁着这次更新,我来记录一下如何在 PotPlayer 上使用 Nvidia Super Resolution.
浏览器开启 VSR
本小节先介绍一下如何让 Chrome 和 Edge 浏览器使用 Nvidia Super Resolution。
MyBatis-Plus 实现 MySQL JSON 类型字段的映射
序言
MySQL 支持 JSON 类型的字段。相比字符串类型的字段, JSON 类型有如下好处:
- 自动检查 JSON 语法是否正确
- 底层支持快速存取 JSON 中的元素。不需要将整个 字符串 全部读取出来,再解析成 JSON 对象
在逻辑上,JSON 与 POJO 无异。Spring MVC 已经实现了 Controller 层两者的自动转化,这体现在请求参数和返回值上。那么,Repository 层如何实现两者的自动转换呢?
本文展示了通过使用 MyBatis-Plus,无侵入式地实现持久层 JSON 与 POJO 的自动映射(ORM, Object Relational Mapping)
案例演示
数据库表
Spring MVC 使用 Validation 注解实现请求参数自动校验
序言
控制器方法( handler )中负责请求参数校验。
传统的写法是在每个方法的开头对所有请求参数进行校验,如果存在参数不满足条件,则抛出异常,或者提前返回错误。
Validation API 提供了一系列的注解,通过将这些注解标记在 entity 类的属性上,Spring MVC 会根据这些注解的语义,自动完成请求参数校验。如果参数不满足条件,则抛出异常。这节省了开发者手动校验请求参数的麻烦。
负责自动参数校验的类实际上是由 Spring Boot 自动装配导入的,因此我们要使用对应的 starter 依赖。
案例演示
依赖
Hexo自定义404页面
自定义 404 页面
首先,创建一个名为 404
的 post
1 | hexo new 404 |
在对应的 md 文件中,我们可以自定义 404 页面。由于 Hexo 框架的特性,我们可以编写 JS 脚本,让页面动起来。
这里给出我的 404 页面。可以看到,上面有一个倒计时。当倒计时为 0 时,会自动跳转到首页。当然,用户也可以手动点击,从而返回首页。
下面是对应的代码,直接放在 md 文件中即可:
1 | <script src="https://code.jquery.com/jquery-3.7.1.min.js" integrity="sha256-/JqT3SQfawRcv/BIHPThkBvs0OEvtFFmqPF/lYI/Cxo=" crossorigin="anonymous"></script> |
jQuery 在这里只是用于获取 DOM 对象,因此也完全可以用原生 JS 函数来写。