Given the array nums consisting of 2n elements in the form [x1,x2,...,xn,y1,y2,...,yn].
Return the array in the form [x1,y1,x2,y2,...,xn,yn].
Time Complexity -> step
어떻게 step을 줄일 수 있을까?
직관적으로 떠오르는 것은
int[]을 두 개 만들어서 옮겨 담고
다시 합친것을 return하는것
O(N) + O(N) O(2N) => O(N)
변수를 하나 더 둬서 n번에 해결했다.
Memory Complexity
class Solution {
public int[] shuffle(int[] nums, int n) {
int[] result = new int[n*2];
int i = 0;
for(int idx = 0; idx < n; idx++) {
result[i++] = nums[idx];
result[i++] = nums[n+idx];
}
return result;
}
}
Runtime: 0 ms, faster than 100.00% of Java online submissions for Shuffle the Array.
Memory Usage: 39.1 MB, less than 62.77% of Java online submissions for Shuffle the Array.
다른 사람 코드
class Solution {
public int[] shuffle(int[] nums, int n) {
int[] output = new int[nums.length];
short x =0;
short y =1;
for(int i=0;i<n;i++){
output[x] = nums[i];
x +=2;
output[y] = nums[n+i];
y+=2;
}
System.gc();
return output;
}
}
Runtime: 1 ms, faster than 16.91% of Java online submissions for Shuffle the Array.
Memory Usage: 38.2 MB, less than 99.84% of Java online submissions for Shuffle the Array.
short과 System.gc를 사용했다.
System.gc를 쓰지 말라고하는데 수동으로 가비지 컬렉터를 돌리는 것
즉 사용하지 않고 점유하고 있는 메모리를 지워주는 기능이다.
이때 쓰레드가 멈춰버리기 때문에 사용하지 말라고한다.
'Algorithm > LeetCode' 카테고리의 다른 글
[LeetCode] Kids With the Greatest Number of Candies (0) | 2021.06.14 |
---|---|
[LeetCode] Richest Customer Wealth (0) | 2021.06.12 |
[LeetCode] Running Sum of 1d Array (0) | 2021.06.08 |
[LeetCode] Check if Word Equals Summation of Two Words (0) | 2021.06.07 |
[Quiz] Find-Eventual-Safe-States (0) | 2021.05.26 |