본문 바로가기

leetcode3

[LeetCode] Container With Most Water 문제 https://leetcode.com/problems/container-with-most-water/description/ 해석 height배열에서 2개의 height를 골라 그 안에 가장 많은 양의 물을 저장하고 그 값을 구하는 것이다. 2가지 방법으로 풀어보겠습니다 1. 가장 Naive하게 떠오르는 방법으로는 모든 height의 index를 돌면서 최대값을 갱신하는 것입니다. for i in range(len(height)-1): for j in range(i+1, len(height)): ans = max(ans, min(height[i], height[j])*(j-i)) 이렇게 접근하면 문제는 너무 쉽게 풀리지만, Time Limit에 걸리게 됩니다. height의 길이가 10^5이기 때문이.. 2024. 3. 29.
[LeetCode] Find All Duplicates in an Array 문제 https://leetcode.com/problems/find-all-duplicates-in-an-array/description/?envType=daily-question&envId=2024-03-25 파라미터로 주어진 nums에 중복된 수가 있으면 그 수를 찾아 return 하라는 간단한 문제입니다. 해석 3가지 방법으로 풀어보겠습니다. 1. 1 ~ N 까지의 체크할 수 있는 공간을 만들어두기 이 경우엔, 1 ~ N을 리스트로 만들어 1의 값으로 만들어 두고, nums를 돌며 나오는 값을 리스트에서 -1 해준다. arr = [1] * (N+1) for i in nums: arr[i] -= 1 for i in nums: if arr[i] < 0: ans.append(i) return ans 다만.. 2024. 3. 25.
[LeetCode] Two Sum 문제 https://leetcode.com/problems/two-sum/description/ 설명 문제는 굉장히 쉽습니다. nums 리스트 안의 값 중 target값을 만족하는 두 값을 찾고 그 두값의 index를 return 하면 됩니다! 1. 가장 먼저 떠오르는 방법은 2중 for문을 활용해 인덱스의 조회를 통한 탐색방법이 있습니다. 근데, 1번의 방법은 O(n^2)의 시간복잡도가 필요하죠,, 시간이 너무 오래 걸린다는 말입니다. 따라서 다른 더 빠른 방법을 생각해봐야 합니다. // 1번 방법 for (int i=0;i 2024. 3. 24.