| 每日一题做题记录,参考官方和三叶的题解 |
题目要求
思路:模拟
- 根据当前位序的奇偶判断放前半段数字还是后半段数字。
Java
class Solution {
public int[] shuffle(int[] nums, int n) {
int[] res = new int[2 * n];
for(int i = 0, j = n, k = 0; k < 2 * n; k++)
res[k] = k % 2 == 0 ? nums[i++] : nums[j++];
return res;
}
}
- 时间复杂度:
- 空间复杂度:
C++
class Solution {
public:
vector<int> shuffle(vector<int>& nums, int n) {
vector<int> res(2 * n);
for (int i = 0, j = n, k = 0; k < 2 * n; k++)
res[k] = k % 2 == 0 ? nums[i++] : nums[j++];
return res;
}
};
- 时间复杂度:
- 空间复杂度:
Rust
impl Solution {
pub fn shuffle(nums: Vec<i32>, n: i32) -> Vec<i32> {
nums[0..n as usize].into_iter().zip(nums[n as usize..2 * n as usize].into_iter()).map(|(&a, &b)| vec![a, b]).flatten().collect::<Vec<_>>()
}
}
- 时间复杂度:
- 空间复杂度:
总结
用好条件运算就可以一行实现逻辑。
【开学第一天来一道简单题】
| 欢迎指正与讨论! |