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 |
Tags
- 파이썬
- geometry
- Method
- Matrix
- dynamic programming
- Binary Tree
- Data Structure
- bit manipulation
- Number Theory
- greedy
- sorting
- Counting
- array
- Binary Search
- string
- 코테
- java
- Tree
- 구현
- database
- SQL
- 자바
- simulation
- Stack
- implement
- hash table
- Class
- Math
- 코딩테스트
- two pointers
Archives
- Today
- Total
코린이의 소소한 공부노트
[LeetCode/Medium] 1493. Longest Subarray of 1's After Deleting One Element 본문
코딩테스트 풀이/JAVA
[LeetCode/Medium] 1493. Longest Subarray of 1's After Deleting One Element
무지맘 2023. 7. 6. 00:481. Input
1) int[] nums
2. Output
1) nums의 부분 배열에서 요소 1개를 삭제했을 때 1로만 이루어진 가장 긴 부분 배열의 길이를 반환
2) 그런 배열이 없다면 0을 반환
3. Constraint
1) 1 <= nums.length <= 10^5
2) nums는 0과 1로 이루어져 있다.
4. Example
Input: nums = [1,1,0,1] -> Output: 3
Input: nums = [0,1,1,1,0,1,1,0,1] -> Output: 5
Input: nums = [1,1,1] -> Output: 2
설명:
- [0, 3] 구간의 부분 배열에서 2번째를 삭제하면 [1,1,1]이 된다.
- [1, 6] 구간의 부분 배열에서 4번째를 삭제하면 [1,1,1,1,1]이 된다.
- [0, 2] 구간의 부분 배열에서 아무거나 1개 삭제하면 [1,1]이 된다.
5. Code
class Solution {
public int longestSubarray(int[] nums) {
int max = 0;
for(int i=0 ; i<nums.length ; i++){
if(nums[i]==1){
int zero = 0, j = i+1, zi = j;
while(j<nums.length){
if(nums[j]==0) {
if(zero==0){
zero++; zi = j;
}
else if(zero==1)
break;
}
j++;
}
int len = j-i-zero;
if(zero==2 && nums[j]==0) len++;
if(len>max) max = len;
if(i==0 && j==nums.length && zero==0) {
max--; break;
}
i = zi;
}
}
return max;
}
}
- 99.9%, 41%
'코딩테스트 풀이 > JAVA' 카테고리의 다른 글
[백준 온라인 저지] 11650. 좌표 정렬하기 (0) | 2023.07.06 |
---|---|
[LeetCode/Medium] 11. Container With Most Water (0) | 2023.07.06 |
[LeetCode/Medium] 3. Longest Substring Without Repeating Characters (0) | 2023.07.04 |
[LeetCode/Medium] 2. Add Two Numbers (0) | 2023.07.04 |
[프로그래머스/Lv.0] 정수를 나선형으로 배치하기 (0) | 2023.07.04 |