【算法】1929. 数组串联(java / c / c++ / python / go / rust)
【摘要】 1929. 数组串联:给你一个长度为 n 的整数数组 nums 。请你构建一个长度为 2n 的答案数组 ans ,数组下标 从 0 开始计数 ,对于所有 0 <= i < n 的 i ,满足下述所有要求:ans[i] == nums[i]ans[i + n] == nums[i]具体而言,ans 由两个 nums 数组 串联 形成。返回数组 ans 。 样例 1输入: nums = [1,...
1929. 数组串联:
给你一个长度为 n 的整数数组 nums 。请你构建一个长度为 2n 的答案数组 ans ,数组下标 从 0 开始计数 ,对于所有 0 <= i < n 的 i ,满足下述所有要求:
ans[i] == nums[i]
ans[i + n] == nums[i]
具体而言,ans 由两个 nums 数组 串联 形成。
返回数组 ans 。
样例 1
输入:
nums = [1,2,1]
输出:
[1,2,1,1,2,1]
解释:
数组 ans 按下述方式形成:
ans = [nums[0],nums[1],nums[2],nums[0],nums[1],nums[2]]
ans = [1,2,1,1,2,1]
样例 2
输入:
nums = [1,3,2,1]
输出:
[1,3,2,1,1,3,2,1]
解释:
数组 ans 按下述方式形成:
ans = [nums[0],nums[1],nums[2],nums[3],nums[0],nums[1],nums[2],nums[3]]
ans = [1,3,2,1,1,3,2,1]
提示
- n == nums.length
- 1 <= n <= 1000
- 1 <= nums[i] <= 1000
分析
- 参数长度不可变
- 按着题意,直接新建2倍大数组,然后循环2 * n次,按顺序赋值。
- 由于结果是入参重复2次,所以也可以直接循环n次,每次赋值2个结果。
- 参数长度可变
- 直接在参数后面,重复一遍自己,然后返回即可。
题解
java
public class Solution {
public int[] getConcatenation(int[] nums) {
// 原数组长度
final int n = nums.length;
// 结果数组长度
final int m = n * 2;
int[] ans = new int[m];
for (int i = 0; i < m; ++i) {
ans[i] = nums[i % n];
}
return ans;
}
}
class Solution {
public int[] getConcatenation(int[] nums) {
// 原数组长度
final int n = nums.length;
int[] ans = new int[n * 2];
for (int i = 0; i < n; ++i) {
ans[i] = ans[i + n] = nums[i];
}
return ans;
}
}
c
/**
* Note: The returned array must be malloced, assume caller calls free().
*/
int* getConcatenation(int* nums, int numsSize, int* returnSize){
int *ans = malloc(sizeof(int) * numsSize * 2);
for (int i = 0; i < numsSize; ++i) {
ans[i] = ans[i + numsSize] = nums[i];
}
*returnSize = numsSize * 2;
return ans;
}
c++
class Solution {
public:
vector<int> getConcatenation(vector<int>& nums) {
nums.insert(nums.end(), nums.begin(), nums.end());
return nums;
}
};
python
class Solution:
def getConcatenation(self, nums: List[int]) -> List[int]:
nums.extend(nums)
return nums
go
func getConcatenation(nums []int) []int {
return append(nums, nums...)
}
rust
impl Solution {
pub fn get_concatenation(nums: Vec<i32>) -> Vec<i32> {
let mut nums = nums;
for i in 0..nums.len() {
nums.push(nums[i]);
}
nums
}
}
原题传送门:https://leetcode-cn.com/problems/concatenation-of-array/
非常感谢你阅读本文~
欢迎【点赞】【收藏】【评论】~
放弃不难,但坚持一定很酷~
希望我们大家都能每天进步一点点~
本文由 二当家的:https://bbs.huaweicloud.com/community/usersnew/id_1628396583336561 博客原创~
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)