-
-
Notifications
You must be signed in to change notification settings - Fork 245
[devyejin] WEEK 03 solutions #1798
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
Merged
Merged
Changes from 9 commits
Commits
Show all changes
13 commits
Select commit
Hold shift + click to select a range
3f859c0
climbing staris solution
devyejin 564f163
product of array except self solution
devyejin 64ebc44
3 sum solution
devyejin 53f0a11
validate binary search tree
devyejin bc68cb3
Merge branch 'DaleStudy:main' into main
devyejin 432fda4
valid palindrome solution
devyejin 10d6a8f
number of 1 bits solution
devyejin b37d9d2
개행 추가
devyejin 9c60339
개행 추가
devyejin de5164c
decode ways solutions
devyejin 66335b3
중복 연산 제거
devyejin 45ff2a2
combination sum solution
devyejin ae73269
maximum subarray solution
devyejin File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
class Solution: | ||
def threeSum(self, nums: List[int]) -> List[List[int]]: | ||
nums.sort() # O(n) | ||
|
||
n = len(nums) | ||
result = [] | ||
|
||
for i in range(n - 2): | ||
# target을 잡을때도 이전에 구했다면 패스 | ||
if i > 0 and nums[i] == nums[i - 1]: | ||
continue | ||
|
||
target = - nums[i] | ||
left, right = i + 1, n - 1 | ||
|
||
while left < right: | ||
two_sum = nums[left] + nums[right] | ||
|
||
if two_sum == target: | ||
result.append([nums[i], nums[left], nums[right]]) | ||
|
||
while left < right and nums[left] == nums[left + 1]: | ||
left += 1 | ||
|
||
while left < right and nums[right] == nums[right - 1]: | ||
right -= 1 | ||
|
||
left += 1 | ||
right -= 1 | ||
|
||
elif two_sum < target: | ||
left += 1 | ||
else: | ||
right -= 1 | ||
|
||
return result |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
class Solution(object): | ||
def climbStairs(self, n): | ||
""" | ||
:type n: int | ||
:rtype: int | ||
""" | ||
if n <= 2: | ||
return n | ||
|
||
dp = [0] * (n + 1) | ||
dp[1], dp[2] = 1, 2 | ||
|
||
for i in range(3, n + 1): | ||
dp[i] = dp[i-1] + dp[i-2] | ||
|
||
return dp[n] | ||
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
class Solution: | ||
def hammingWeight(self, n: int) -> int: | ||
result = 0 | ||
while n: | ||
result += n % 2 | ||
n //= 2 | ||
return result |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
class Solution: | ||
def productExceptSelf(self, nums): | ||
n = len(nums) | ||
result = [1] * n | ||
|
||
left_product = 1 | ||
for i in range(n): | ||
result[i] = left_product | ||
left_product *= nums[i] | ||
|
||
right_product = 1 | ||
for i in range(n - 1, -1, -1): | ||
result[i] *= right_product | ||
right_product *= nums[i] | ||
|
||
return result |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
# isalnum() : 문자열이 영어, 한글 숫자 -> True , 아니라면 False | ||
class Solution: | ||
def isPalindrome(self, s: str) -> bool: | ||
s = s.replace(" ", "") | ||
changed_s = [c.lower() for c in s if c.isalnum()] | ||
return changed_s == changed_s[::-1] |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
# Definition for a binary tree node. | ||
from collections import deque | ||
class TreeNode: | ||
def __init__(self, val=0, left=None, right=None): | ||
self.val = val | ||
self.left = left | ||
self.right = right | ||
|
||
def list_to_tree(arr): | ||
if not arr: | ||
return None | ||
# -> 레벨로 주고 있음 | ||
root = TreeNode(arr[0]) | ||
queue = deque([root]) # 큐에 root를 넣고 시작 queue = deque() queue.append(root)와 동일 | ||
i = 1 | ||
|
||
while queue and i < len(arr): | ||
current = queue.popleft() | ||
|
||
if i < len(arr) and arr[i] is not None: | ||
current.left = TreeNode(arr[i]) | ||
queue.append(current.left) | ||
i += 1 | ||
|
||
if i < len(arr) and arr[i] is not None: | ||
current.right = TreeNode(arr[i]) | ||
queue.append(current.right) | ||
i += 1 | ||
|
||
return root | ||
|
||
|
||
class Solution: | ||
def isValidBST(self, root: Optional[TreeNode]) -> bool: | ||
self.prev = None | ||
def inorder(node): | ||
if not node: | ||
return True | ||
|
||
# 왼쪽 서브트리 확인 | ||
if not inorder(node.left): | ||
return False | ||
|
||
# 현재 노드 값 확인 | ||
if self.prev is not None and node.val <= self.prev: | ||
return False | ||
self.prev = node.val | ||
|
||
return inorder(node.right) | ||
|
||
return inorder(root) |
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.