计算机创新协会冬令营——暴力枚举题目02

再次欢迎大家参加此次的冬令营,我们协会欢迎所有志同道合的同学们。话不多说,先来看看今天的题目吧。♪(^∇^*)

题目

力扣题号:2367. 算术三元组的数目

注:下述题目和示例均来自力扣


题目

给你一个下标从 0 开始、严格递增 的整数数组 nums 和一个正整数 diff 。如果满足下述全部条件,则三元组 (i, j, k) 就是一个 算术三元组 :

  • i < j < k ,
  • nums[j] - nums[i] == diff 且
  • nums[k] - nums[j] == diff

返回不同 算术三元组 的数目

示例

示例 1:

输入:nums = [0,1,4,6,7,10], diff = 3
输出:2
解释:
(1, 2, 4) 是算术三元组:7 - 4 == 3 且 4 - 1 == 3 。
(2, 4, 5) 是算术三元组:10 - 7 == 3 且 7 - 4 == 3 。

示例 2:

输入:nums = [4,5,6,7,8,9], diff = 2
输出:2
解释:
(0, 2, 4) 是算术三元组:8 - 6 == 2 且 6 - 4 == 2 。
(1, 3, 5) 是算术三元组:9 - 7 == 2 且 7 - 5 == 2 。

提示

  • 3 <= nums.length <= 200
  • 0 <= nums[i] <= 200
  • 1 <= diff <= 50
  • nums 严格 递增

这个传说中的算术三元组也就是连续三个数的差值==diff罢了,诶,不用连续。这个题目理解了就简单了

Java题解一:直接暴力

直接三重循环,挨个找数即可

class Solution {public int arithmeticTriplets(int[] nums, int diff) {// 计算长度int len = nums.length;// 定义结果int res = 0;// 开始三重循环,每一层代表一个数,挨个遍历寻找for (int i = 0; i < len; i++) {for (int j = 0; j < len; j++) {for (int k = 0; k < len; k++) {if (nums[j] - nums[i] == diff && nums[k] - nums[j] == diff){// 由于已经是递增的数组,所以不用判断i < j < k// 满足条件res加一res++;}}}}return res;}
}

暴力的结果就是  足够慢!!!


Java题解二:哈希表

这里就是通过哈希表快速查找属于很简单但是很经典的哈希表应用。

class Solution {public static int arithmeticTriplets(int[] nums, int diff) {// 定义出哈希表,这里用set集合Set<Integer> set = new HashSet<>();// 先全部存入set集合for (int num : nums) {set.add(num);}// 定义返回值int res = 0;// 挨个寻找最终结果 for (int num : nums) {// 算术三元组 符合条件if (set.contains(num + diff) && set.contains(num + 2 * diff)) {// 符合结果加一res++;}}return res;}
}

其他语言解法

这里我只提供第二中方法的其他语言,暴力的代码应该都看得懂

C++
class Solution {
public:int arithmeticTriplets(vector<int>& nums, int diff) {// 定义哈希表,使用unordered_setstd::unordered_set<int> set;// 将所有元素存入unordered_setfor (int num : nums) {set.insert(num);}// 定义返回值int res = 0;// 逐个查找最终结果for (int num : nums) {// 判断是否存在等差数列if (set.count(num + diff) && set.count(num + 2 * diff)) {// 符合条件的结果加一res++;}}return res;}
};

 

总结

这两道题就是这样大家加油

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

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

相关文章

Winform中使用Websocket4Net实现Websocket客户端并定时存储接收数据到SQLite中

场景 SpringBootVue整合WebSocket实现前后端消息推送&#xff1a; SpringBootVue整合WebSocket实现前后端消息推送_websocket vue3.0 springboot 往客户端推送-CSDN博客 上面实现ws推送数据流程后&#xff0c;需要在windows上使用ws客户端定时记录收到的数据到文件中&#x…

C/C++动态内存分配 malloc、new、vector(简单讲述)

路虽远&#xff0c;行则将至 事虽难&#xff0c;做则必成 今天来主要讲C中动态内存分配 其中会穿插一些C的内容以及两者的比较 如果对C语言中的动态内存分配还不够理解的同学 可以看看我之前的博客:C语言动态分配 在讲解C的动态内存分配之前 我们先讲一下C内存模型 &#xff1…

利用深度学习图像识别技术实现教室人数识别

引言 在现代教育环境中&#xff0c;高效管理和监控教室成为了一个重要议题。随着人工智能技术的迅猛发展&#xff0c;特别是深度学习和图像识别领域的突破&#xff0c;我们现在可以通过智能系统来自动识别教室内的人数&#xff0c;从而实现更加智能化的教室管理。 深度学习与图…

简易机器学习笔记(七)计算机视觉基础 - 常用卷积核和简单的图片的处理

前言 这里实际上涉及到了挺多有关有关理论的东西&#xff0c;可以详细看一下paddle的官方文档。不过我这里不过多的谈有关理论的东西。 【低层视觉】低层视觉中常见的卷积核汇总 图像处理中常用的卷积核 在代码中&#xff0c;我们实际上是用不同的卷积核来造成不同的影响&a…

普中STM32-PZ6806L开发板(资料收集...)

简介 逐渐收集一些开发过程中使用到的文档资料数据手册 DS18B20 数据手册 DS18B20 Datasheet 开发文档 STM32F1各种文档 https://www.st.com/en/embedded-software/stm32cubef1.html#documentation HAL库文档开发文档 你使用的HAL文档, 在STM32CubeMX生成过程的最下面有…

如何在群晖7.2中运行WPS Office镜像容器并使用固定地址公网访问

文章目录 1. 拉取WPS Office镜像2. 运行WPS Office镜像容器3. 本地访问WPS Office4. 群晖安装Cpolar5. 配置WPS Office远程地址6. 远程访问WPS Office小结 7. 固定公网地址 wps-office是一个在Linux服务器上部署WPS Office的镜像。它基于WPS Office的Linux版本&#xff0c;通过…

性能测试之(九):JMeter关联

关联&#xff1a;当请求之间有依赖关系&#xff0c;比如下一个请求的入参是上一个请求返回的数据&#xff0c;这需要进行关联处理&#xff1b; 关联场景1&#xff1a;登录之后返回token&#xff0c;后续的请求需要带token; 常用的关联方法&#xff1a;&#xff08;在后置处理器…

Unity | 渡鸦避难所-5 | 角色和摄像机之间的遮挡物半透明

1 前言 角色在地图上移动到岩石后面时&#xff0c;完全被岩石遮挡&#xff0c;玩家只能看到岩石。这逻辑看起来没问题&#xff0c;但并不是玩家想要看到的画面&#xff0c;玩家更希望关注角色的状态 为了避免角色被遮挡&#xff0c;可以使用 Cinemachine Collider 功能&#x…

AI:110-基于深度学习的药物分子结构生成与预测

🚀点击这里跳转到本专栏,可查阅专栏顶置最新的指南宝典~ 🎉🎊🎉 你的技术旅程将在这里启航! 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 ✨✨✨ 每一个案例都附带有在本地跑过的关键代码,详细讲解供…

C++面向对象语法总结(二)

目录 《C面向对象语法总结(一&#xff09;》 十一、继承 继承&#xff0c;可以让子类拥有父类的多有成员&#xff08;变量、函数&#xff09;如下面的代码&#xff1a;Student是子类&#xff08;subclass,派生类&#xff09;&#xff0c;Person是父类&#xff08;superclass…

echarts点击柱子、线节点、横坐标标签

echarts点击柱子、线节点、横坐标标签 x轴标签要为标签文字添加点击事件&#xff0c;必须先在xAxis里设置响应事件 xAxis: {triggerEvent: true, },然后直接监听 thisChart.on("click" ,function (params) {console.log(params) });通过params.componentSubType来…

互联网分布式应用之SpringCloud

SpringCloud Java 是第一大编程语言和开发平台。它有助于企业降低成本、缩短开发周期、推动创新以及改善应用服务。如今全球有数百万开发人员运行着超过 51 亿个 Java 虚拟机&#xff0c;Java 仍是企业和开发人员的首选开发平台。 课程内容的介绍 1. 微服务项目介绍 2. Eure…