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
- 카카오
- 스프링 에러
- java leetcode
- leetcode 1721
- 리트코드 1557
- 그래프 자바
- java 프로그래머스
- DP
- 자바
- 인텔리제이 에러
- 리트코드
- 백준
- Java
- 구현
- 프로그래머스
- 프로그래머스 java
- 백준 18222
- 백준 16935
- daily challenge
- 분할정복
- 자바 리트코드
- 스택
- 리트코드 자바
- leetcode
- 코테
- BFS
- dfs
- 코딩테스트
- 자바 5464
- 파이썬
Archives
- Today
- Total
레벨업 일지
leetcode 946. Validate Stack Sequences 본문
문제
https://leetcode.com/problems/validate-stack-sequences/description/
스택의 push , pop 연산이 주어졌을때 valid한 연산인지 알아내는 문제
풀이
자바로 스택 문제를 풀이할때는 LinkedList 가 편하다. 리스트의 맨앞, 맨뒤 삽입 삭제 연산이 가능하기 떄문이다.
풀이는 다음과 같다.
- pushed 배열을 선형 탐색하면서 리스트에 원소를 추가
- 리스트의 마지막 원소(스택의 top) 가 popped[k] 랑 같다면 리스트 마지막 원소 삭제
- pushed 배열탐색 끝난 후 리스트가 비어있는지 체크
코드
자바
class Solution {
public boolean validateStackSequences(int[] pushed, int[] popped) {
LinkedList<Integer> l= new LinkedList<>();
int poppedIndex =0 ;
for(int i = 0 ;i < pushed.length ;i++){
if(poppedIndex == popped.length)return false;
l.add(pushed[i]);
while(!l.isEmpty() && l.peekLast() == popped[poppedIndex]){
l.pollLast();
poppedIndex++;
}
}
return l.isEmpty();
}
}
'알고리즘 > leetcode' 카테고리의 다른 글
[Java] leetcode 307. Range Sum Query - Mutable (0) | 2023.05.04 |
---|---|
[Java] leetcode 662. Maximum Width of Binary Tree (0) | 2023.04.20 |
leetcode 508. Most Frequent Subtree Sum (0) | 2023.04.12 |
[Java] leetcode 2390. Removing Stars From a String (0) | 2023.04.11 |
[Java] leetcode 72. Edit Distance (2) | 2023.04.11 |
Comments