-
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
[정현준] 10주차 #538
[정현준] 10주차 #538
Conversation
return mid | ||
} | ||
if (nums[low] <= nums[mid]) { | ||
if (target in nums[low] .. nums[mid]) { |
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.
코틀린을 모르는 입장에서 이부분이 순회처럼 보이는데 단순 비교라서 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.
저도 순회하는 것 처럼 보이길래 자바로 디컴파일해보니 조건문으로 적용되더라구요 ㅎㅎ
int var10000;
int var10002;
if (nums[low] <= nums[mid]) {
var10000 = nums[low];
var10002 = nums[mid];
if (var10000 <= target) {
if (var10002 >= target) {
high = mid;
continue;
}
}
low = mid;
} else {
var10000 = nums[mid];
var10002 = nums[high];
if (var10000 <= target) {
if (var10002 >= target) {
low = mid;
continue;
}
}
high = mid;
}
} | ||
|
||
/** | ||
* TC: O(lists.size * ListNode.size), SC: O(lists.size) |
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.
분할정복 방식에서 시간 복잡도는 O( log(lists.size) * listNode.size))가 걸리지 않을까요?
공간복잡도도 O( log(lists.size) )가 아닐까 싶습니다!
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.
흠 말씀해주셔서 다시 생각해보니 SC는 콜 스택 깊이가 절반으로 줄어들어서 log로 볼 수 있을 것 같네요
TC는 mergeLists
풀이와 merge()
를 호출하는 방법만 달라지고 노드 비교 횟수는 동일하다고 생각되어서 log가 아닌 것 같다고 생각했습니다 ㅎㅎ
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.
@jdalma 님 이번 한 주도 고생하셨습니다~
코틀린 코드는 매번 볼 때 마다 새로운게 보이네요
/** | ||
* TC: O(n), SC: O(n) | ||
*/ | ||
private fun usingDFS(node: TreeNode?): TreeNode? { |
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.
저는 inorder traversal 로 풀었는데 문제의 핵심인 왼쪽과 오른쪽을 바꾼다
를 잘 해석하신거같아 좋은 풀이같아요 👍
degree[course]++ | ||
} | ||
|
||
val queue = ArrayDeque<Int>().apply { |
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.
while문을 순회하며 로직을 순차적으로 진행하기 위해 queue특성을 활용한걸로 이해가 되요. 그런의미에서 dequeue를 사용하신 이유가 궁금합니다!
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.
말씀하신대로 단순히 Queue의 특성을 이용하고 싶어서 사용하였는데 내부 구현의 차이점을 확실히 이해하고 있진 않지만 ArrayDeque가 LinkedList보다 빠르다는 말이 있어서 Queue를 사용할 때는 항상 ArrayDeque를 사용했습니다 ㅎㅎ
한번 구현을 확인해 볼 필요도 있겠네요 ㅎㅎ
이 클래스는 스택으로 사용할 경우 Stack 보다 빠르고, 큐로 사용할 경우 LinkedList 보다 빠를 가능성이 높습니다.
ArrayDeque
답안 제출 문제
체크 리스트
In Review
로 설정해주세요.