leetcode 1304. 和为零的 N 个不同整数

文章介绍了LeetCode第1304题的解决方案,通过使用指针方法创建一个和为零的整数数组。当给定一个整数n时,生成一个包含n个不同整数的数组,使得数组元素之和为0。例如,对于n=5,可能的解是[-7,-1,1,3,4]。解题思路是初始化一个长度为n的数组,然后将前半部分元素设置为其索引+1的值,后半部分设置为相反数,从而确保总和为零。
摘要由CSDN通过智能技术生成

leetcode 1304. 和为零的 N 个不同整数.


题目描述

  1. 和为零的 N 个不同整数

给你一个整数 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

解题思路

法1

指针:\

和值为0

我们可以考虑使用指针的方法来解决

维护一个指针指向数组的开始位置与结束位置,分别给他们的数值赋值为相反数,这样和值值就为0了

指针向中间移动,直到左指针>右指针不成立时结束循环,.并返回结果数组

  • 时间复杂度(O(n))
  • 空间复杂度(O(1))

执行结果

法1
func sumZero(n int) []int {
    //返回结果数组
    a:=make([]int,n)
    //赋值
    for i:=0;i<n/2;i++{
        //i位赋值为i+1(从0开始)
        a[i]=i+1
        //n-1-i位赋值为-i-1(最后一个位置)
        a[n-i-1]=-(i+1)
    }
    //返回结果
    return a
}

执行结果: 通过 显示详情 查看示例代码 添加备注

执行用时: 0 ms , 在所有 Go 提交中击败了 100.00% 的用户 内存消耗: 2.1 MB , 在所有 Go 提交中击败了 81.48% 的用户 通过测试用例: 42 / 42 炫耀一下:



本文由 mdnice 多平台发布

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值