2024/07/08 5

[ArraysHasing][Medium] 128. Longest Consecutive Sequence

https://leetcode.com/problems/longest-consecutive-sequence/description/ 주어진 숫자 배열에서 연속된 증가수의 최대 길이를 찾아라. 이때 O(n)의 TC를 만족하는 알고리즘을 작성하라. 값에 대한 조회가 O(1)에 가능해야 하므로, hash를 사용해야 한다. 또한 전체적으로 O(N)에 로직이 작성되어야 한다. 따라서 2중 for loop를 피한다.  증가되는 수의 시작 지점을 조회하여 연속된 만큼 카운팅 한다. 시작지점 조회 - O(n)각 지점에 대한 연속된 수 카운팅 O(x) 최적 O(n)최악 O(n + x)  음 다소 애매. 더보기int longestConsecutive(vector& nums) { if(nums.size() sBuff; ..

Leetcode/NeetCode 2024.07.08

[ArraysHashing][Medium] 238. Product of Array Except Self

https://leetcode.com/problems/product-of-array-except-self/description/  정수 배열이 주어 질 때, 자신을 제외한 곱을 구하는 알고리즘을 작성하라. 이때 O(n)의 TC에 추가 메모리를 사용하지 말라. 이때 반환할 버퍼는 추가 메모리로 간주하지 않는다.  자주 나오는 패턴의 문제. 제한이 없을 때 매우 간단한 문제.  O(n)의 TC 제한이 있으므로, 2중 loop는 허용되지 않는다. O(1)의 space complexity 만을 가져야 하므로, 반환할 버퍼에 임시 데이터를 쓴다. 더보기vector productExceptSelf(vector& nums) { vector vRet; vRet.resize(nums.size()..

Leetcode/NeetCode 2024.07.08

[ArraysString][Medium] 271. Encode and Decode String

https://neetcode.io/problems/string-encode-and-decode  NeetCode neetcode.io 주어진 string을 조각으로 분해 한 후, 다시 합치는 로직 즉, encode, decode 함수를 만들어라.  역시 여러가지 다양한 방법이 있을 수 있겠으나, 나누는 문자 등과 구분을 위하여, 길이+string 꼴로 변환할 필요가 있다는 것이다.  이것에 유의해서 만들면 큰 어려움은 없을 것.  코드 더보기string encode(vector& strs) { string ret = ""; for (auto k = 0; k decode(string s) { vector vRet; string sCur = ""; int cnt = -1; ..

Leetcode/NeetCode 2024.07.08