leetcode(리트코드)206-Reverse Linked List
leetcode(리트코드)206-Reverse Linked List
leetcode 206 - Reverse Linked List 문제입니다.
1. 문제
https://leetcode.com/problems/reverse-linked-list/
2. Input , Output
3. 분류 및 난이도
Eazy 난이도 문제입니다.
leetcode Top 100 Liked 문제입니다.
4. 문제 해석
- LinkedList가 주어집니다. 뒤집어야합니다.
5. code
c++
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution {
public:
void save(ListNode* head,vector<int>& vec)
{
if(head!=nullptr)
{
vec.push_back(head->val);
save(head->next,vec);
}
}
//재귀
void put(ListNode* node,vector<int>& vec,int count)
{
if(node!=nullptr)
{
node->val = vec[count--];
put(node->next,vec,count);
}
}
//for문
void put2(ListNode* node,vector<int>& vec,int count)
{
for(;count>=0;--count)
{
node->val = vec[count];
node=node->next;
}
}
ListNode* reverseList(ListNode* head) {
ListNode* savenode = head;
vector<int> vec;
save(savenode,vec);
savenode= head;
//put(head,vec,vec.size()-1);
//put2(head,vec,vec.size()-1);
//수정 구문
ListNode* prev= nullptr;
ListNode* next;
while(savenode!=nullptr)
{
next = savenode->next;
savenode->next = prev;
prev = savenode;
savenode=next;
}
return prev;
}
};
6. 결과 및 후기, 개선점
코드에 대한 설명이 필요하신 분은 댓글을 달아주세요.!!
코드를 개선하였으나 시간차이가 별로 없었다..
아이디어만 배워갔다.
This post is licensed under CC BY 4.0 by the author.