알고리즘/알고리즘 공부(JAVA) 11

Remove Nth Node From End of List(JAVA)

URL : https://leetcode.com/explore/interview/card/top-interview-questions-easy/93/linked-list/603/   문제풀이- 단방향 linked-list와 n이 주어지며, 뒤에서 n번째 값을 제거한 linked-list를 반환해라!- null값을 받을것도 고려해야함 -> 리스트가 하나밖에없는 값을 대비하기 위해서 dummy데이터를 젤 앞에 넣음- 그러고 더미데이터 다음을 주어진 linked-list와 연결- first, last두개를 지정하기 last는 n만큼 먼저 간 포인터이고, first는 last가 끝에 도착했을 때 n만큼앞에 있는 포인터임. 이 두가지의 조합으로 뒤에서 n만큼 앞에있는 요소를 파악이 가능함.- 해당 지점을 찾앗을때 ..

Delete Node in a Linked List

URL : https://leetcode.com/explore/interview/card/top-interview-questions-easy/93/linked-list/553/  내용 설명 - 단방향 linked list가 제공된다. 여기서 삭제될 노드의 정보도 제공된다. - 제공된 노드를 제거한 linked list를 만들어라 - 각 노드는 유일한 값이며, 맨 마지막 node가 삭제되는일이 없다 얻을수 있는 Hint- 맨 마지막 node가 삭제되는일이 없기에 null을 고민할 필요가 없음 풀이- 단순히 현재 노드를 건너 띄고, 다음 노드를 연결시키면된다.- 현재 노드 value값을 다음노드의 val로 현재노드의 point를 다음노드로 옮기면 된다./** * Definition for singly-lin..

LeetCode(Single Number)

url : https://leetcode.com/explore/interview/card/top-interview-questions-easy/92/array/549/ 위 문제는 배열에서 한 숫자를 제외한 나머지 숫자는 2개가 있으며, 한 숫자는 1개만 존재하며, 이숫자가 어떤 숫자인지 찾는 문제 처음 문제를 풀었을때는 짝수니 배열을 생성해서 넣고, 빼버리면 남은건 하나만 있지 않을까?위와 같은 생각을 가지고 풀었다. 하지만 조건이 시간복잡도는 O(n), 공간복잡도 O(1)을 요구해서 위 경우 처럼 풀었을 경우 시간 복잡도는 만족하지만 공간복잡도를 만족하지 못한다. 공간 복잡도를 O(1)로 만들기 위해서 다른 방법을 찾았고 다음과 같은 힌트를 보고 문제를 새로 풀었다.문제 풀이 방법1. 비트연산중 XOR방..

LeetCode(Contains Duplicate)

금일 풀어본 문제는 Contains Duplicate라는 알고리즘이다. Url : https://leetcode.com/explore/interview/card/top-interview-questions-easy/92/array/578/ 문제에서 물어본 내용은 배열에 같은 값이 최소 2개가 있으면 True, 아니면 False로 반환하라고 했다.  첫번째 문제 풀이 방법1. nums[i]의 최소값과 최대값만큼 (약 10억)개의 boolean 리스트 생성2. nums.length를 전체돌면서 한번 방문한 곳은 true로 변경3. 다시 방문했을때 해당 index가 true로 되어있으면 두번째 방문이므로 리스트에 해당 숫자가 2개임을 파악가능 실패 : out of memory사유 : 10억개의 인자를 가진 배열..

Leetcode(Rotate Array)

금일 풀어본 문제는 Reate Array문제이다. url : https://leetcode.com/explore/interview/card/top-interview-questions-easy/92/array/646/ 문제는 아래와 같이 주어졌다. 문제에서 요청사항1. list상에서 가장뒤에있는 숫자를 빼서 리스트 젤 앞으로 이동시키는 작업을 K번 만큼 진행2. 공간복잡도를 1로만들수 있는 방법중에서 가장 많이 풀어보아라  첫번째 방법은 주어진 방법 그대로 맨뒤에 있는 값을 젤 앞으로 이동시키는 방법아래와 같이 공간 복잡도는 1이지만 시간 복잡도는 n^2이여서 timeout발생하여 정답이 아님- 공간복잡도 : O(1)- 시간복잡도 : O(n^2)class Solution { public voi..