class Solution {
public String restoreString(String s, int[] indices) {
// //map
// Map<Integer, Character> m = new HashMap<Integer, Character>();
// for (int i = 0; i < indices.length; i++) {
// m.put(indices[i], s.charAt(i));
// }
// StringBuilder sb = new StringBuilder();
// for (int j = 0; j < indices.length; j++) {
// sb.append(m.get(j));
// }
// return sb.toString();
//array
char[] result = new char[indices.length];
for (int i = 0; i < s.length(); i++) {
result[indices[i]] = s.charAt(i);
}
StringBuilder sb = new StringBuilder();
sb.append(result);
return sb.toString();
}
}
Runtime: 3 ms, faster than 23.07% of Java online submissions for Shuffle String.
Memory Usage: 39.1 MB, less than 43.45% of Java online submissions for Shuffle String.
Runtime: 1 ms, faster than 99.95% of Java online submissions for Shuffle String.
Memory Usage: 38.7 MB, less than 95.27% of Java online submissions for Shuffle String.
쉬맵 vs array 싸움에는 index를 알면 array가 이기네요
쉬맵이: Key - Index, Value - Character로 잡아서 0 부터 끝까지 Key가 있는게 보장받으니 하나하나 .get 해줘서 Stringbuilder에 넣어줬읍니다
Array: 생각해보니 index가 이미 나와있어서..^^ char[] 잡아줘서 ==> 한방에 sb로 convert해주기
저의 쉬맵이 사랑을 느낄 수 있는 문제였읍니다
class Solution {
public int minTimeToVisitAllPoints(int[][] points) {
// int distance = 0;
// int[] prev = points[0];
// for (int[] p : points) {
// while (p[0] != prev[0] || p[1] != prev[1]) {
// //while (! prev.equals(p)) {
// if (p[0] > prev[0]) {
// prev[0]++;
// } else if (p[0] < prev[0]){
// prev[0]--;
// }
// if (p[1] > prev[1]) {
// prev[1]++;
// } else if (p[1] < prev[1]) {
// prev[1]--;
// }
// distance++;
// }
// }
int distance = 0;
int[] prev = points[0];
for (int[] p : points) {
int x = Math.abs(p[0] - prev[0]);
int y = Math.abs(p[1] - prev[1]);
distance += Math.max(x, y);
prev = p;
}
return distance;
}
}
Runtime: 17 ms, faster than 5.59% of Java online submissions for Minimum Time Visiting All Points.
Memory Usage: 38.3 MB, less than 91.11% of Java online submissions for Minimum Time Visiting All Points.
Runtime: 0 ms, faster than 100.00% of Java online submissions for Minimum Time Visiting All Points.
Memory Usage: 38.4 MB, less than 80.94% of Java online submissions for Minimum Time Visiting All Points.
x 1칸, y 1칸, 아님 둘 다 한칸씩 움직일 수 있으니 x값과 y값의 차이를 계산해서 그 중 더 큰걸 더해주는 방식
그냥 빼주면 되는데 처음거를 비효율적으로 2중포문이를 돌렸어요