본문 바로가기

코딩테스트 준비/Leetcode

리츠코드 문제.

Easy:

 

  • 1. Two Sum :
    • HashMap.  HashMap에 주어진 target - 현재 num이 있는지 체크
    • 없으면 HashMap에  {num, index} 를 넣고 
    • 있으면 int[]{ index1, index2 } , index1은 map에서 target-num으로 가져온거, index2는 현재 for loop pointer 가 가르키고있는 index임.
    • TC = O(N), SC = O(N)
  • 13. Roman to Integer :
    • HashMap에 주어진 Symbol과 숫자를 넣음.
    • 포함되지 않은 4,9 40, 90, 400, 900 같은 case는 앞에 기호가 뒤에 기호보다 작다는 것을 이용해서 풀어주면 됨.
    • TC = O(1), SC = O(1) -> 로마자로 나타낼수 있는 숫자가 한정됨. 그래서 O(1).
  • 20. Valid Parentheses :
    • Stack
    • ( { [ - 여는 부분을 만났을때 닫은 부분 ) } ] 을 stack에 넣어주기
    • ) } ] - 닫는 부분을 만났을때 stack 에서 꺼내면서 다르면 return false
    • 마지막에 stack이 비어있으면 true, 안비어 있으면 false.
    • TC = O(n), SC = O(n)
  • 121. Best Time to Buy and Sell Stock
    • (1) min Price 저장 : minPrice = Math.min(minPrice, prices[i]);
    • (2) profit 업데이트 : profit = Math.max(profit, prices[i] - minPrice)
  • 680. Valid Palindrome II
    • s can be palindrome after deleting at most one character from it.
    • Two pointer
    • 한번은 다른게 괜찮으니 처음 달라졌을때만 두 포인터를 넘겨서 따로 체크.
    • TC: O(N), SC: O(1)
  • 14. Longest Common Prefix
    • Input: strs = ["flower","flow","flight"] -> 긴 prefix 찾는 문제
    • 한글자씩 다 체크해주기 f -> l -> o 이런식으로
    • TC = O(M), SC = O(1).   M = 글자수
  • 문제 풀이 중단..... 너무 비효율적.....
  • 차라리 엑셀에 정리하는게 더 빠를듯...
  • https://docs.google.com/spreadsheets/d/1l5Qq1MolPpwh2qcxjpBoCczKAEYhViB_adaCnAzonFU/edit?ouid=110862024920538518792&usp=sheets_home&ths=true

 

'코딩테스트 준비 > Leetcode' 카테고리의 다른 글

20. Valid Parentheses  (0) 2022.07.28
1. Two Sum  (0) 2022.07.27