Leetcode #83 Algorithm Question Review ๐ฆฉ
๋ฌธ์ ์ถ์ฒ: https://leetcode.com/problems/remove-duplicates-from-sorted-list/
/**
* Definition for singly-linked list.
* function ListNode(val, next) {
* this.val = (val===undefined ? 0 : val)
* this.next = (next===undefined ? null : next)
* }
*/
/**
* @param {ListNode} head
* @return {ListNode}
์กฐ๊ฑด:
- ๋
ธ๋ value๋ -100 ๋ถํฐ 100 ๊น์ง ์์.
- ๋
ธ๋์ ์๋ ์ต๋ 300๊ฐ๊น์ง ์์.
- ๋
ธ๋๋ ๋ฌด์กฐ๊ฑด ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ๋์ด ์๋ค.
1) 1์ฐจ์ ์ผ๋ก ํฌ๊ธฐ ์์ผ๋ก ์ ๋ ฌ์ด ๋์ด์์. ์ค๋ณต๊ฐ๋ง ์์ ๋ฉด ๋๋ค.
2) prevVal๊ณผ curVal์ ๋น๊ต
3) ๋น๊ตํด์ value๊ฐ ๊ฐ์ ๊ฒฝ์ฐ, curNode๋ฅผ ์์ ๊ณ prevNode์ nextNode๋ฅผ ์ด์ด์ค์ผํ๋ค.
- ๋ฐํํ๋ ๋งํฌ๋๋ฆฌ์คํธ๋ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ์ด ๋์ด์์ด์ผ ํ๋ค.
- input, output ์ ๋ถ linked list๋ก!
*/
const deleteDuplicates = function(head) {
let cur = head;
if (head !== null && head.next){ //โ๏ธ Runtime Error๋ฅผ ๋ง์ฃผํ๋ ๊ตฌ๊ฐ
cur = head.next;
prevNode = head;
if (prevNode.val === cur.val){
cur = cur.next
prevNode.next = cur;
}
while (cur !== null && cur.next){
if(cur !== null && prevNode.val === cur.val){
cur = cur.next;
prevNode.next = cur;
} else {
prevNode = cur;
cur = cur.next;
}
}
if (cur !== null && prevNode.val === cur.val){
prevNode.next = null;
}
} else {
return head;
}
return head;
};
if (head.next)
)์์ runtime error์ ์์ธ์ ๋ถ์ํ๋๋ผ ์๊ฐ์ ๋ง์ด ๋ณด๋๋ค.head
์ null๊ฐ์ด ๋ค์ด์ฌ ์๋ ์๋๋ฐ, null์ด๋ผ๋ฉด head.next
์๋ ์์ ์ ๊ทผํ ์๊ฐ ์์ด์ null์ฒดํฌ๋ฅผ ๋จผ์ ํด์ผํ๊ธฐ ๋๋ฌธโ๏ธ//val๊ณผ next์ ์กฐ๊ฑด
function ListNode(val, next) {
this.val = (val===undefined ? 0 : val)
this.next = (next===undefined ? null : next)
}