Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Kubernetes
- Deployment
- AZ-900
- EC2
- AZURE
- Network
- 쿠버네티스
- EKS
- Django
- DevOps
- IAC
- ebs
- FastAPI
- asgi
- 자바스크립트
- elasticsearch
- AWS
- intervals
- asyncio
- event loop
- K8S
- terraform
- dockerfile
- leetcode
- WSGI
- Service
- POD
- ansible
- docker
- Python
Archives
- Today
- Total
궁금한게 많은 개발자 노트
[ leetcode ] 1218. Longest Arithmetic Subsequence of Given Difference 본문
Algorithm
[ leetcode ] 1218. Longest Arithmetic Subsequence of Given Difference
궁금한게 많은 개발자 2023. 7. 14. 17:21해당 문제는 숫자 배열과 diff가 주어졌을 때, arr의 subsequence 중에서 diff간격으로 이어지는 가장 긴 subsequence 길이를 반환하는 문제입니다. subsequence는 연속되지 않아도 됩니다.
특정 숫자로 시작하는 subsequence길이를 저장하는 것이 주요하여 map<int, int>자료 구조를 사용하여 특정 숫자로 끝나는 subsequence의 최대 길이를 저장해두었습니다.
subsequence는 diff를 더해가며 나오는 배열의 길이를 찾는 것이므로, i번째 숫자 - diff가 이미 map에 존재한다면 그 길이에 +1을 해서 i번째 숫자를 map에 저장해두고 반복해나가면 됩니다.
즉, arr[i] - diff가 map에 이미 존재한다면 arr[i] - diff까지의 길이 + 1을 arr[i]숫자에 저장해줍니다.
#include <map>
#define max(a,b)((a) > (b) ? (a) : (b))
class Solution {
public:
int longestSubsequence(vector<int>& arr, int difference) {
map<int, int> index_list;
int answer = 0;
for (int i = 0; i < arr.size(); i++) {
int temp = arr[i];
if (index_list.find(temp - difference) != index_list.end())
index_list[temp] = index_list[temp - difference] + 1;
else
index_list[temp] = 1;
answer = max(answer, index_list[temp]);
}
return answer;
}
};
'Algorithm' 카테고리의 다른 글
[ leetcode ] 445. Add Two Numbers II (0) | 2023.07.17 |
---|---|
[ leetcode ] 334. Increasing Triplet Subsequence (0) | 2023.07.17 |
[ leetcode ] 198. House Robber (0) | 2023.07.14 |
[ leetcode ] 207. Course Schedule (0) | 2023.07.14 |
[ leetcode ] 209. Minimum Size Subarray Sum (0) | 2023.07.07 |
Comments