【LeetCode - 每日1题】构造和为0的n个不同整数数组
🌈 个人主页:(时光煮雨)
🔥 高质量专栏:vulnhub靶机渗透测试
👈 希望得到您的订阅和支持~
💡 创作高质量博文(平均质量分95+),分享更多关于网络安全、Python领域的优质内容!(希望得到您的关注~)
🌵目录🌵
- 难度 ⭐⭐
- 题目回顾
- 🌵解题思路分析
-
- 💖概述
- 💓核心思路
- ✅代码实现
- ✅复杂度分析
- ✅测试用例验证
-
- 🍦示例1
- 🍬示例2
- 🍮边缘用例
- 💖总结
- 🤝 期待与你共同进步
- 📚 参考文档
难度 ⭐⭐
题目回顾
给你一个整数 n,请你返回 任意 一个由 n 个 各不相同 的整数组成的数组,并且这 n 个数相加和为 0 。
示例 1: 输入:n = 5 输出:[-7,-1,1,3,4] 解释:这些数组也是正确的
[-5,-1,1,2,3],[-3,-1,2,-2,4]。示例 2: 输入:n = 3 输出:[-1,0,1]
示例 3: 输入:n = 1 输出:[0] 提示: 1 <= n <= 1000
🌵解题思路分析
💖概述
题目要求构造一个由 n个互不相同的整数组成的数组,且这些数的和必须为 0。核心思路是利用对称性:生成成对的正负数(如 ±1, ±2,…)来相互抵消,若 n为奇数则额外添加一个 0补齐。
💓核心思路
-
对称构造:
- 若 n是偶数,直接生成 n/2对正负数(如 [1, -1, 2, -2]),每对和均为 0。
- 若 n是奇数,生成 (n-1)/2对正负数后,再添加一个 0(如 [1, -1, 0])。
-
唯一性保证:
- 正数部分从 1开始递增生成,负数部分为其相反数,0最多出现一次,确保所有元素互异。
-
和为零:
- 正负数对相互抵消,奇数时 0不影响总和。
✅代码实现
from typing import Listclass