반응형
반응형
문제 풀이 주어진 두 문자열이 Isomorphic 이면 true를 반환, 아니면 false를 반환하면 되는 문제 map를 하나 생성해서 두 문자열을 매핑하고 비교하면 된다. 하지만 한 가지 주의해야 할 점은 두 문자가 같은 문자에 맵핑될 수 없다는 점이다. 즉 아래와 같은 경우는 o가 a와 r에 매핑되므로 false가 반환되어야 한다. f -> b o -> a o -> r 아래와 같은 경우 역시 b와 d가 b에 매핑되고 a와 c가 a에 매핑되므로 false가 반환되어야 한다. b -> b a -> a d -> b c -> a s -> t 로 매핑되는 맵과 t -> s 로 매핑되는 맵 2가지를 만들어서 계산하면 위 같은 케이스를 구분할 수 있다. 그런데 자바 HashMap에는 값이 있는 지 확인할 수 있는..
문제 풀이 왼쪽 값들의 합과 오른쪽 값들의 합이 일치하는 pivot 인덱스를 찾는 문제이다.찾지 못하면 -1를 반환하면 된다.전체 값의 합을 구한 다음, 해당 값을 이용해서 오른쪽 값들의 합을 구하면 된다. 오른 쪽 값들의 합 = 전체 값의 합 - pivot - 왼쪽 값들의 합 참고로 Java Stream API 를 이용해서 Array의 sum 값을 구할 수 있다. Arrays.stream(array).sum(); 코드 class Solution { public int pivotIndex(int[] nums) { var total = Arrays.stream(nums).sum(); var leftSum = 0; for(int i=0; i
문제 풀이 투 포인터로 풀면 된다. 배열의 처음(left)과 배열의 맨 끝부분(right)의 포인터를 이동하면서 가장 큰 area를 구하면 된다. - area = (right - left) * min(height[left], height[right]) 포인터의 이동은 left와 right의 height를 비교해서 left가 더 크면 right를 왼쪽으로 이동해주고 아니면 left를 오른쪽으로 이동해주면 된다. left가 right보다 크면 loop를 종료하면 된다. 코드 Java class Solution { public int maxArea(int[] height) { int area = 0; int left = 0; int right = height.length - 1; while (left < ri..