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
- string
- 코테
- Data Structure
- Method
- bit manipulation
- hash table
- database
- Math
- 코딩테스트
- Counting
- 파이썬
- greedy
- two pointers
- simulation
- Number Theory
- SQL
- Tree
- Binary Tree
- geometry
- java
- array
- dynamic programming
- Binary Search
- 자바
- Matrix
- Stack
- implement
- sorting
- Class
- 구현
Archives
- Today
- Total
코린이의 소소한 공부노트
[LeetCode/Easy] 2733. Neither Minimum nor Maximum 본문
1. Input
1) int[] nums
2. Output
1) nums의 요소 중 최솟값도 아니고 최댓값도 아닌 수 중 하나를 반환
2) 그런 수가 없다면 -1을 반환
3. Constraint
1) 1 <= nums.length <= 100
2) 1 <= nums[i] <= 100
3) nums에 중복된 수는 없다.
4. Example
Input: nums = [3,2,1,4] -> Output: 2
Input: nums = [1,2] -> Output: -1
설명:
- 최댓값은 4, 최솟값은 1이므로 남은 2나 3중 하나를 반환한다.
- 최댓값은 2, 최솟값은 1이므로 남은 수가 없어 -1을 반환한다.
5. Code
1) 첫 코드
class Solution {
public int findNonMinOrMax(int[] nums) {
if(nums.length<=2) return -1;
int max = Math.max(nums[0],nums[1]), min = Math.min(nums[0],nums[1]), mid = 0;
for(int i=2 ; i<nums.length ; i++){
if(nums[i]<min){
mid = min; min = nums[i];
} else if(nums[i]<max)
mid = nums[i];
else{
mid = max; max = nums[i];
}
}
return mid;
}
}
- 92%, 68%
- 너무 정성스럽게 찾은 것 같은 느낌
2) sort랑 비교해보고 싶어 작성한 코드
class Solution {
public int findNonMinOrMax(int[] nums) {
if(nums.length<=2) return -1;
Arrays.sort(nums);
return nums[1];
}
}
- 56%, 55%
- 역시 내장함수는 비용이 크다는 것인가..
3) quicksort를 이용해서 풀어본 코드
class Solution {
public int findNonMinOrMax(int[] nums) {
if(nums.length<=2) return -1;
quicksort(nums, 0, nums.length-1);
return nums[1];
}
static void quicksort(int[] arr, int start, int end){
if(start>=end) return;
int i = start+1, j = end, pivot = start;
while(i<=j){
while(i<=end && arr[i]<=arr[pivot]) i++;
while(j>start && arr[j]>arr[pivot]) j--;
if(i<j){
int tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
} else{
int tmp = arr[j];
arr[j] = arr[pivot];
arr[pivot] = tmp;
}
}
quicksort(arr, start, j-1);
quicksort(arr, j+1, end);
}
}
- 7%, 68%
- 첫 코드가 제일 낫다...
'코딩테스트 풀이 > JAVA' 카테고리의 다른 글
[LeetCode/Easy] 2744. Find Maximum Number of String Pairs (0) | 2023.06.30 |
---|---|
[LeetCode/Easy] 2739. Total Distance Traveled (0) | 2023.06.30 |
[LeetCode/Easy] 2729. Check if The Number is Fascinating (0) | 2023.06.30 |
[LeetCode/Easy] 2717. Semi-Ordered Permutation (0) | 2023.06.30 |
[LeetCode/Easy] 2716. Minimize String Length (0) | 2023.06.30 |