Two Pointers2 [leetcode] 11. Container With Most Water [leetcode] 11. Container With Most Water 문제 풀이 투 포인터로 풀면 된다. 배열의 처음(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 ri.. 2022. 8. 13. [leetcode] 15. 3Sum [leetcode]15. 3Sum 문제 풀이 a + b + c = 0 인 경우를 찾는 문제이다. 투 포인터를 이용해서 풀었다. 우선 정렬을 한 다음에 for 루프를 돌면서 nums[index] 가 a 라고 할 때 포인터를 이동하면서 b 와 c 값을 찾았다. 문제에서 답에 중복을 허용하지 않기 때문에 중복인 경우는 다시 계산하지 않게 처리했다. [0, 0, 0, 0, 0, 0] 와 같은 인풋이 들어왔을 때 한 번만 계산하고 스킵하게 된다. 시간복잡도는 O(N^2) 이 된다. => 정렬하는 데 O(NlogN) + for 루프 돌면서 b와 c값 찾는 데 O(N^2) 코드 fun threeSum(nums: IntArray): List { nums.sort() val result: MutableList = mut.. 2021. 8. 7. 이전 1 다음