写点什么

2024-08-24:用 go 语言,给定一个下标从 1 开始,包含不同整数的数组 nums,数组长度为 n。 你需要按照以下规则进行 n 次操作,将数组 nums 中的所有元素分配到两个新数组 arr1 和

  • 2024-08-24
    北京
  • 本文字数:1119 字

    阅读完需:约 4 分钟

2024-08-24:用 go 语言,给定一个下标从 1 开始,包含不同整数的数组 nums,数组长度为 n。


你需要按照以下规则进行 n 次操作,将数组 nums 中的所有元素分配到两个新数组 arr1 和 arr2 中:


1.首先将 nums 中第一个元素加入 arr1。


2.然后将 nums 中第二个元素加入 arr2。


3.如果 arr1 的最后一个元素 大于 arr2 的最后一个元素,就将 nums[i] 追加到 arr1 。否则,将 nums[i] 追加到 arr2 。


最终将 arr1 和 arr2 连接起来形成一个新数组 result,并返回该数组。


输入:nums = [2,1,3]。


输出:[2,3,1]。


解释:在前两次操作后,arr1 = [2] ,arr2 = [1] 。


在第 3 次操作中,由于 arr1 的最后一个元素大于 arr2 的最后一个元素(2 > 1),将 nums[3] 追加到 arr1 。


3 次操作后,arr1 = [2,3] ,arr2 = [1] 。


因此,连接形成的数组 result 是 [2,3,1] 。


答案 2024-08-24:


chatgpt


题目来自 leetcode3069。

大体步骤如下:

根据提供的代码和题目描述,以下是整个过程的逐步解释:


1.初始给定数组 nums = [2, 1, 3]。


2.创建两个空数组 a 和 b,分别初始化为 [2] 和 [1],也就是将 nums 中的前两个元素分配给 a 和 b。


3.开始遍历 nums 中的第三个元素(3):


  • 因为 a 的最后一个元素 2 大于 b 的最后一个元素 1,所以将 nums[3] 即 3 加入数组 a,此时 a = [2, 3],b = [1]。


4.将数组 a 和 b 连接起来形成新数组 result = [2, 3, 1]。


5.最终返回结果数组 result = [2, 3, 1]。


总的时间复杂度取决于 nums 的长度 n,因为在每次迭代中,只有常数时间的操作。因此,时间复杂度为 O(n)。


总的额外空间复杂度主要是由新创建的数组 a 和 b 以及最终的 result 数组占用的空间。在这个算法中,除了输入数组 nums 外,只使用了常数级别的额外空间存储 a、b 和 result,因此额外空间复杂度为 O(1)。

Go 完整代码如下:

package main
import ( "fmt")
func resultArray(nums []int) []int { a := nums[:1] b := []int{nums[1]} for _, x := range nums[2:] { if a[len(a)-1] > b[len(b)-1] { a = append(a, x) } else { b = append(b, x) } } return append(a, b...)}
func main() { nums := []int{2, 1, 3} fmt.Println(resultArray(nums))}
复制代码


rust 代码如下:

fn result_array(nums: &[i32]) -> Vec<i32> {    let mut a: Vec<i32> = nums[..1].to_vec();    let mut b: Vec<i32> = vec![nums[1]];
for &x in nums[2..].iter() { if a[a.len()-1] > b[b.len()-1] { a.push(x); } else { b.push(x); } }
a.append(&mut b); return a;}
fn main() { let nums = [2, 1, 3]; println!("{:?}", result_array(&nums));}
复制代码



发布于: 刚刚阅读数: 6
用户头像

公众号:福大大架构师每日一题 2021-02-15 加入

公众号:福大大架构师每日一题

评论

发布
暂无评论
2024-08-24:用go语言,给定一个下标从1开始,包含不同整数的数组 nums,数组长度为 n。 你需要按照以下规则进行 n 次操作,将数组 nums 中的所有元素分配到两个新数组 arr1 和_福大大架构师每日一题_福大大架构师每日一题_InfoQ写作社区