-
Notifications
You must be signed in to change notification settings - Fork 126
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[JisooPyo] WEEK 02 solutions #709
Conversation
* 배열을 쓰지 않고 변수를 사용하여 공간 복잡도를 개선한 버전입니다. | ||
* Runtime: 0 ms(Beats: 100.00 %) | ||
* Time Complexity: O(n) | ||
* - n번 순회 | ||
* | ||
* Memory: 34.06 MB(Beats: 15.90 %) | ||
* Space Complexity: O(1) | ||
* - 사용되는 추가 공간이 입력 크기와 무관하게 일정함 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
😎👍
* Time Complexity: O(n) | ||
* | ||
* Memory: 38.62 MB(Beats: 56.62 %) | ||
* Space Complexity: O(n) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
부연 설명에 Hashmap이라고만 적어 주셔서 이게
- Hashmap 할당에 필요한 추가적인 공간 복잡도가 해당 문제에선 지배적인데, 그 공간 복잡도가 O(N)이다 (그리고 재귀호출 스택에 대한 부분도 고려를 해야한다)
- 이 문제에서 필요한 추가적인 공간에 대한 복잡도는 해시맵만 고려하면 되고 그것은 O(N)이다
둘 중 뭔지 헷갈리는 것 같아요
좀 더 정확한 표현을 써주시면 좋을 것 같습니다 :)
재귀호출 스택에 대한 부분도 고려를 하셨을지 궁금해서 코멘트 남기려다가 주석에 대한 피드백 남기고 갑니다
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
sum > 0 -> right = skipDuplicates(nums, right, false) | ||
sum < 0 -> left = skipDuplicates(nums, left, true) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
아래서 중복 처리를 해주고 있는데 굳이 여기서 미리 해 줄 필요가 있을까 하는 생각이 들었습니다.
sum > 0 -> right = skipDuplicates(nums, right, false) | |
sum < 0 -> left = skipDuplicates(nums, left, true) | |
sum > 0 -> right-- | |
sum < 0 -> left++ |
// 첫 세 수의 합이 0보다 크거나, 마지막 세 수의 합이 0보다 작으면 불가능 | ||
val lastIndex = nums.size - 1 | ||
if (nums[0] + nums[1] + nums[2] > 0 || | ||
nums[lastIndex] + nums[lastIndex - 1] + nums[lastIndex - 2] < 0 | ||
) { | ||
return emptyList() | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
와, 참신한 성능 최적화인 것 같습니다!
var rootIndex = 0 | ||
for (i in inorder.indices) { | ||
if (inorder[i] == root.`val`) { | ||
rootIndex = i | ||
break | ||
} | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
indexOf()
함수를 사용했다면 좀 더 깔끔했겠는데? 라는 생각이 들었습니다.
var rootIndex = 0 | |
for (i in inorder.indices) { | |
if (inorder[i] == root.`val`) { | |
rootIndex = i | |
break | |
} | |
} | |
val rootIndex = inorder.indexOf(root.`val`) |
} | ||
|
||
@Test | ||
fun test() { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
테스트 코드도 짜시는 것이 인상적이네요! 라이브 코딩에서 중요한 요소 중 하나죠! 이번주도 고생많으셨습니다~
답안 제출 문제
체크 리스트
In Review
로 설정해주세요.