双指针巧解复写零难题,告别人工出题!PromptCoT 2.0 让大模型自己造训练难题,7B 模型仅用合成数据碾压人工数据集效果!。

张开发
2026/4/15 18:07:05 15 分钟阅读

分享文章

双指针巧解复写零难题,告别人工出题!PromptCoT 2.0 让大模型自己造训练难题,7B 模型仅用合成数据碾压人工数据集效果!。
复写零问题解析复写零问题要求将数组中出现的零进行复制并将其他元素向右移动同时保持数组长度不变。例如数组[1, 0, 2, 3, 0, 4, 5, 0]处理后应变为[1, 0, 0, 2, 3, 0, 0, 4]。双指针法实现思路初始化指针定义两个指针i和j其中i用于遍历原数组j用于标记新数组的位置。首先遍历数组统计零的个数计算新数组的最终位置。逆向填充数组从数组末尾开始逆向填充遇到零时复制一次并移动指针。非零元素直接填充到新位置。代码实现def duplicateZeros(arr): n len(arr) zero_count arr.count(0) j n zero_count - 1 i n - 1 while i 0 and j 0: if arr[i] ! 0: if j n: arr[j] arr[i] else: if j n: arr[j] 0 j - 1 if j n: arr[j] 0 i - 1 j - 1复杂度分析时间复杂度O(n)遍历数组两次分别统计零的个数和填充数组。空间复杂度O(1)原地修改数组未使用额外空间。边界条件处理数组为空或长度为1时直接返回。确保指针j不越界避免数组访问错误。示例验证输入[1, 0, 2, 3, 0, 4, 5, 0]输出应为[1, 0, 0, 2, 3, 0, 0, 4]。通过双指针法正确实现零的复制和元素右移。https://github.com/LouisaLoue/wmb_1fnk/blob/main/README.mdhttps://raw.githubusercontent.com/LouisaLoue/wmb_1fnk/main/README.mdhttps://github.com/AnnadaBuck/896_csh0https://github.com/AnnadaBuck/896_csh0/blob/main/README.mdhttps://raw.githubusercontent.com/AnnadaBuck/896_csh0/main/README.md

更多文章