Mock Interview: Facebook #3

JJ·2021년 5월 12일
0

MockTest

목록 보기
28/60

1528. Shuffle String

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해주기

저의 쉬맵이 사랑을 느낄 수 있는 문제였읍니다

1266. Minimum Time Visiting All Points

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중포문이를 돌렸어요

0개의 댓글