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

2024-08-24:用go语言,给定一个下标从1开始,包含不同整数的数组 nums,数组长度为 n。 你需要按照以下规则进行 n 次操作,将数组 nums 中的所有元素分配到两个新数组 arr1 和的更多相关文章
- java消除整型数组中重复的元素,排序后输出新数组
法一: import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(S ...
- ca12a_c++顺序容器的操作5_访问容器中的数据元素
ca12a_c++顺序容器的操作5_访问容器中的数据元素访问元素:c.back()..显示最后一个数据c.front() ..显示第一个数据c[n],n就是下标,适合vector与dequec.at( ...
- 找出list中的不同元素、删除两个list中相同的对象
package com.test; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; ...
- Java笔试题:给定一个ReadOnlyClass的对象roc,能否把这个对象的age值改成30?
在Java笔试面试中,经常会遇到代码题,今天我们就来看一则Java代码笔试题. 有如下代码: Class ReadOnlyClass { private Integer age=20; public ...
- Day_12【集合】扩展案例1_利用集合的知识对长度为10的int数组进行去重,产生新数组,不能改变数组中原来数字的大小顺序
分析以下需求,并用代码实现 1.定义一个长度为10的int数组,并存入10个int类型的数据,其中有一些数据是重复的 2.利用集合的知识对数组进行去重,产生新数组,不能改变数组中原来数字的大小顺序 3 ...
- 刷题3:给定一个数组 nums,判断 nums 中是否存在三个下标 a,b,c数相加等于targe且a,b,c不相等
题目: 给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,下标 ,a ,b , c 对应数相加等于 targe 找出所有满足条件且不重复的三元组下标 解析: ...
- 刷题之给定一个整数数组 nums 和一个目标值 taget,请你在该数组中找出和为目标值的那 两个 整数
今天下午,看了一会github,想刷个题呢,就翻出来了刷点题提高自己的实际中的解决问题的能力,在面试的过程中,我们发现,其实很多时候,面试官 给我们的题,其实也是有一定的随机性的,所以我们要多刷更多的 ...
- 给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值target的那两个整数,并返回它们的数组下标。
/** * 给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值target的那两个整数,并返回它们的数组下标. * * 你可以假设每种输入只会对应一个答案.但是,数组中 ...
- 面试题:给定一个长度为N的数组,其中每个元素的取值范围都是1到N。判断数组中是否有重复的数字
题目:给定一个长度为N的数组,其中每个元素的取值范围都是1到N.判断数组中是否有重复的数字.(原数组不必保留) 方法1.对数组进行排序(快速,堆),然后比较相邻的元素是否相同.时间复杂度为O(nlog ...
- 9.11排序与查找(三)——给定一个排序后的数组,包括n个整数,但这个数组已被旋转过多次,找出数组中的某个元素
/** * 功能:给定一个排序后的数组.包括n个整数.但这个数组已被旋转过多次,次数不详.找出数组中的某个元素. * 能够假定数组元素原先是按从小到大的顺序排列的. */ /** * 思路:数组 ...
随机推荐
- NEEPU Sec 2023 Misc 两题题记
GoingOn 题目描述 Keep going on channel 1 ;D 考察的是 midi lsb隐写 MIDI文件概述 CSV文件概述 midi转csv工具 midicsv 将 MIDI 文 ...
- Java 散列表HashTable
什么是散列表hash table和使用场景 什么是散列表 散列表(Hash table,也叫哈希表),是根据关键码值(key value)而直接进行访问的数据结构.它通过把关键码值映射到表中一个位置来 ...
- 详解Web应用安全系列(10)文件上传漏洞
文件上传漏洞(File Upload Vulnerabilities)是Web攻击中常见的一种安全漏洞,它允许攻击者上传并执行恶意文件,从而可能对Web服务器造成严重的安全威胁. 一.定义与原理 文件 ...
- SQL去重distinct方法解析
来源:https://www.cnblogs.com/lixuefang69/p/10420186.html SQL去重distinct方法解析 一 distinct 含义:distinct用来查询不 ...
- oeasy教您玩转python - 001 - # 换行插入
先跑起来 Python 什么是 Python? Python 很好用 适合初学者 而且在各个领域都很强大 后来居上 上图可以点开 python3 早已有之 最终逆风翻盘 当然 java 也 ...
- Nacos 高级详解:提升你的开发和部署效率
Nacos 高级 一 .服务集群 需求 服务提供者搭建集群 服务调用者,依次显示集群中各服务的信息 搭建 修改服务提供方的controller,打印服务端端口号 package com.czxy.co ...
- 开源照片管理神器 PhotoPrism 安装和使用教程
如今我们每个人都积累了海量的照片和视频,做自媒体的 UP 主们积累的照片和视频数量可能更多.面对这么多的照片和视频,我们该如何管理呢? 之前我一直用谷歌相册,因为它有很多优势,比如无限空间,支持智能整 ...
- Jmeter函数助手19-machineName
machineName函数用于获取当前计算机的用户名. 存储结果的变量名(可选)
- 【Tutorial C】01 概述
历史 History 欢迎来到C语言的世界!C语言是一种强大的专业化编程语言,深受业余和专业编程人员的欢迎. 在学习之前先让我们了解和认识它! C语言的原型是A语言(ALGOL 60语言). 1963 ...
- 多智能体路径规划问题 —— Learn all about Multi-Agent Path Finding (MAPF)
地址: http://mapf.info/index.php/Main/Publications 与其对应的实验室地址: https://www.movingai.com/