题目描述:
给你一个下标从 0 开始的整数数组 nums 。如果 nums 中长度为 m 的子数组 s 满足以下条件,我们称它是一个 交替子数组 :
m 大于 1 。
s1 = s0 + 1 。
下标从 0 开始的子数组 s 与数组 [s0, s1, s0, s1,...,s(m-1) % 2] 一样。也就是说,s1 - s0 = 1 ,s2 - s1 = -1 ,s3 - s2 = 1 ,s4 - s3 = -1 ,以此类推,直到 s[m - 1] - s[m - 2] = (-1)^m 。
请你返回 nums 中所有 交替 子数组中,最长的长度,如果不存在交替子数组,请你返回 -1 。
子数组是一个数组中一段连续 非空 的元素序列。
下标从 0 开始的子数组 s 与数组 [s0, s1, s0, s1,...,s(m-1) % 2] 一样。也就是说,s1 - s0 = 1 ,s2 - s1 = -1 ,s3 - s2 = 1 ,s4 - s3 = -1 ,以此类推,直到 s[m - 1] - s[m - 2] = (-1)^m 。
这个条件我无法实现,该怎么判断啊,我看官方答案给的什么数%2说判断奇偶,看不太明白,题目的要求不应该是判断-1的几次方吗?
这是我的代码实现:
int alternatingSubarray(int* nums, int numsSize){ int maxlength = -1,currentlength = 1; int i = 1,t = 1,flag = 0; for(i = 1;i < numsSize;i++){ if(nums[i] - nums[i - 1] == t){ flag = 1; currentlength++; t = -t; }else{ currentlength = 2; t = -1; } if(currentlength > maxlength) maxlength = currentlength; } if(maxlength == 2 && flag != 1) return -1; return maxlength;}
这个样例不成功!
你的代码实现存在一些问题,导致无法正确判断交替子数组的长度。首先,你的变量 t
应该初始化为 1,而不是 -1。其次,在判断子数组是否满足交替条件时,应该比较 nums[i] - nums[i - 1]
是否等于 t
或 -t
,而不是直接等于 t
。
另外,你的代码中使用了变量 flag
来标记是否出现了连续的相等情况,但这个标记并不是必要的,可以直接在循环中判断子数组的长度。
以下是修正后的代码实现:
int alternatingSubarray(int* nums, int numsSize){ if (numsSize < 2) { return -1; } int maxLength = 2; int currentLength = 2; int t = 1; for (int i = 2; i < numsSize; i++) { if (nums[i] - nums[i - 1] == t) { currentLength++; } else if (nums[i] - nums[i - 1] == -t) { currentLength++; t = -t; } else { currentLength = 2; t = -t; } if (currentLength > maxLength) { maxLength = currentLength; } } return maxLength > 2 ? maxLength : -1;}
这个修正后的代码通过遍历数组,使用变量 currentLength
来记录当前交替子数组的长度,使用变量 t
来记录交替的符号。在每次迭代中,根据当前元素与前一个元素的差值来判断是否满足交替条件,并更新 currentLength
和 t
的值。最后返回最长的交替子数组的长度,如果不存在交替子数组,则返回 -1。
在为Apache Kafka创建主题时,什么是最佳实践<每个人都允许自动创建主题吗?或者你是如何做到的?您是否将主题创建步骤与kafka实例的开始捆绑在一起 我有一个基于docker的Kafka安装,它已经被多个应用程序使用了。如何将每个应用程序的主题创建与Kafka容器的启动分开?。在Confluents音乐演示中,他们通过旋转一个新的Kafka图像来创建主题,调用“创建主题脚本”,然后让容器消
我使用的是Debezium,它制作了Kafka Connect。Kafka Connect公开了几个需要创建的主题: OFFSET_STORAGE_TOPIC运行Kafka Connect服务时需要此环境变量。将此设置为Kafka主题的名称,其中Kafka Connect服务组存储连接器偏移。主题应该有许多分区,高度重复(例如,3倍或更多),并且应该为压缩进行配置。 STATUS_STORAGE_
这里有些给使用和编写 Ansible playbook 的贴士. 你能在我们的 ansible-example repository.找到展示这些最佳实践的 playbook 样例.(注意: 这些示例用的也许不是最新版的中所有特性,但它们仍旧是极佳的参考.) Topics 最佳实践 接下来的章节将向你展示一种组织 playbook 内容方式. 你对 Ansible 的使用应该符合你的需求而不是我们
处理后台任务与常规调用方法有很大的不同。本指南旨在帮助让您的后台任务平稳有效地运行。本文基于 这篇博客文章。 使任务参数小而简单 方法(任务)在调用之前会被序列化。使用 TypeConverter 类将参数转换为 JSON 字符串。如果您有复杂的实体和 / 或大对象; 包括数组,最好将它们放入数据库,然后只将其标识 (id) 传递给后台任务。 错误例子: public void Method(En
VR设计 VR设计不同于平面体验设计。作为一种新的媒介,有新的最佳实践需要遵循,特别是保持用户的舒适性和存在性。这在如下指南中已经写得很透彻了: Oculus VR最佳实践 Leap Motion VR最佳实践指南 一些值得注意的事情: 公共的金科玉律是永远不要意外地把相机控制权从用户手中剥夺。 单位(比如对于位置)应该考虑使用米(m)。这是因为WebVR API以米为单位返回姿势数据,进而传送给
本章文档将阐述一些使用herosphp开发一些常用模块的一些比较好的实践。 未完待续。。。