Copilot需用二分划分而非暴力合并:须显式定义left1/right1/left2/right2四点并满足left1+left2==k-1,递归调用含nums1[mid1]<nums2[mid2]等剪枝条件。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

测试 GitHub Copilot 在真实复杂算法任务中的逻辑推理能力,需绕过表面补全,直击多步推导、边界校验与结构化修正环节。
构造强约束算法题作为测试入口
在 VS Code 中新建 Python 文件,输入函数签名:def find_kth_largest_in_two_sorted_arrays(nums1: List[int], nums2: List[int], k: int) -> int:,不写任何实现,直接换行后敲空格触发 Copilot 建议。
这道题是 LeetCode 4. 寻找两个正序数组的中位数的变体,要求时间复杂度低于 O(m+n),必须用二分递归思想拆解——Copilot 若只生成暴力合并排序,说明未进入 Thinking 模式。
若首次建议出现 sorted(nums1 + nums2)[k-1],请按 Esc 拒绝,然后在下一行输入注释:# Use binary search on partition indices, not merge,再手动回车一次。这一步强制它切换到慢思考路径。
验证是否真正理解“二分划分”的数学本质
方法一:观察生成代码中是否显式定义 【left1, right1, left2, right2 四个划分点】 并建立等式 left1 + left2 == k - 1。
方法二:检查递归调用是否带明确剪枝条件,例如 if nums1[mid1] —— 若缺失 <code>k - mid1 - 1 这类动态重算逻辑,说明它把 k 当作固定偏移量处理,推理链条断裂。
使用约定式提交信息暂存、提交和推送git更改。当用户想要提交和推送更改、提到推送到远程、或要求保存并推送工作时触发。也适用于用户说“推送更改”、“提交并推送”、“推送这个”、“推送到github”或类似git工作流程请求时。
注意:Copilot 有时会漏掉对空数组的提前返回,比如 if not nums1: return nums2[k-1]。这个判断必须出现在递归入口第一行,否则后续所有二分都无意义。
引入反例触发深度纠错
第一步:接受 Copilot 生成的初始版本,运行测试用例 find_kth_largest_in_two_sorted_arrays([1, 3], [2], 2),预期输出 2。
第二步:故意将函数名改为 find_kth_smallest_in_two_sorted_arrays,但不改内部逻辑,再次运行同一测试用例,结果返回 3(错误)。
第三步:在出错行上方添加注释:# This returns k-th smallest, but we need k-th largest in descending order,光标停在错误行末尾,按下 Ctrl+Enter(Windows)或 Cmd+Enter(macOS)唤出 Copilot 聚焦模式。
此时 Copilot 应该识别出语义矛盾,并给出两种修正路径:① 将输入数组预翻转;② 把 k 替换为 len(nums1) + len(nums2) - k + 1 后复用原逻辑。若只建议改函数名而不调整计算逻辑,说明它尚未建立“第 k 大 ↔ 第 (n+m−k+1) 小”的映射意识。

















