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
- 스프링부트서버에사진전송
- 파이썬sort
- 스프링부트팔로잉
- 스프링구독
- 출처 코딩셰프
- ssh도커설치
- dockerinstall
- 스프링부트사진올리기
- 서버에도커설치
- 스프링부트팔로우취소
- 스프링사진
- springboot_exception_handler
- 출처 노마드코더
- 스프링사진업로드
- centos도커설치
- 스프링이미지업로드
- 출처 메타코딩
- 도커설치하는법
- 스프링부트api
- 스프링부트구독취소
- 멀티폼
- 출처 따배도
- 스프링부트중복예외처리
- 스프링익셉션처리
- 우분투도커설치
- 인스타클론
- vm도커설치하는법
- 출처 문어박사
- 스프링부트
- WAS웹서버
Archives
- Today
- Total
MakerHyeon
[LeetCode] 707. Design Linked List (python,C++) 본문
https://leetcode.com/problems/design-linked-list/description/
Design Linked List - LeetCode
Can you solve this real interview question? Design Linked List - Design your implementation of the linked list. You can choose to use a singly or doubly linked list. A node in a singly linked list should have two attributes: val and next. val is the value
leetcode.com
SOLUTION CODE
# PYTHON
class ListNode:
def __init__(self, val):
self.val = val
self.prev = None
self.next = None
class MyLinkedList:
def __init__(self):
self.left = ListNode(0)
self.right = ListNode(0)
self.left.next = self.right
self.right.prev = self.left
def get(self, index: int) -> int:
cur = self.left.next
while cur and index > 0:
cur = cur.next
index -= 1
if cur and cur != self.right and index == 0:
return cur.val
return -1
def addAtHead(self, val: int) -> None:
node, next, prev = ListNode(val), self.left.next, self.left
prev.next = node
next.prev = node
node.next = next
node.prev = prev
def addAtTail(self, val: int) -> None:
node, next, prev = ListNode(val), self.right, self.right.prev
prev.next = node
next.prev = node
node.next = next
node.prev = prev
def addAtIndex(self, index: int, val: int) -> None:
next = self.left.next
while next and index > 0:
next = next.next
index -= 1
if next and index == 0:
node, prev = ListNode(val), next.prev
node.next, node.prev = next, prev
next.prev = node
prev.next = node
def deleteAtIndex(self, index: int) -> None:
cur = self.left.next
while cur and index > 0:
cur = cur.next
index -= 1
if cur and cur !=self.right and index == 0:
next, prev = cur.next, cur.prev
next.prev = prev
prev.next = next
# Your MyLinkedList object will be instantiated and called as such:
# obj = MyLinkedList()
# param_1 = obj.get(index)
# obj.addAtHead(val)
# obj.addAtTail(val)
# obj.addAtIndex(index,val)
# obj.deleteAtIndex(index)
# C++ (feat. deque)
class MyLinkedList {
public:
deque<int> d;
MyLinkedList() {
}
int get(int index) {
if(index >= 0 && index < d.size())
return d[index];
return -1;
}
// 맨 앞에 추가
void addAtHead(int val) {
d.push_front(val);
}
// 맨 뒤에 추가
void addAtTail(int val) {
d.push_back(val);
}
// 해당하는 인덱스에 추가
void addAtIndex(int index, int val) {
// 1.인덱스가 범위 초과하는 경우
if(index > d.size())
return;
// 2. 맨끝에 추가
if(index == d.size())
{
d.push_back(val);
return;
}
// 3.맨앞에 추가
if(index==0)
{
d.push_front(val);
return;
}
// 4.중간에 추가
d.push_back(0);
int n = d.size();
for(int i = n-1; i > index; i--)
d[i] = d[i-1];
d[index] = val;
return;
}
void deleteAtIndex(int index) {
if(index < 0 || index >= d.size())
return;
if(index==0)
{
d.pop_front();
return;
}
if(index==d.size()-1)
{
d.pop_back();
return;
}
for(int i = index; i < d.size()-1; i++)
d[i] = d[i+1];
d.pop_back();
return;
}
};
'Algorithm > LeetCode' 카테고리의 다른 글
[LeetCode] 1472. Design Browser History (python,C++) (0) | 2023.03.13 |
---|---|
[LeetCode] 167. Two Sum II - Input Array Is Sorted (python,C++) (0) | 2023.03.13 |
[LeetCode] 125. Valid Palindrome (python,C++) (0) | 2023.03.08 |
[LeetCode] 128. Longest Consecutive Sequence (python,C++) (0) | 2023.03.08 |
[LeetCode] 238. Product of Array Except Self (0) | 2023.01.19 |
Comments