496. Next Greater Element I
The Next Greater Number of a number x in nums1 is the first greater number to its right in nums2. If it does not exist, output -1 for this number.
문제 설명: 문 제 는 중복 요소 가 없 는 두 개의 배열 nums 1, nums 2 를 보 여 주 었 습 니 다. 그 중에서 nums 1 은 nums 2 의 하위 배열 입 니 다.길이 가 nums 1 과 같 고 nums 1 요소 에 대응 하 는 nums 2 요소 의 다음 큰 요소 로 구 성 된 배열 을 요구 합 니 다. 하위 배열 요소 보다 큰 경우 가 없 으 면 - 1 로 돌아 갑 니 다.
개인 문제 풀이 방향: 1. 요소 가 같은 배열 의 위 치 를 찾 습 니 다.2. 찾 으 려 는 요소 보다 큰 값 을 찾 습 니 다. 그렇지 않 으 면 - 1 을 되 돌려 줍 니 다.처음에는 Array. sort (int [] nums) 와 Array. binary Search (int [] nums, int key) 를 사용 하여 정렬 과 검색 방법 으로 위치 추적 을 편리 하 게 하려 고 했 으 나 정렬 을 거 친 배열 을 무시 하고 요소 순서 가 바 뀌 었 습 니 다.
class Solution {
public int[] nextGreaterElement(int[] nums1, int[] nums2) {
for( int i = 0; i < nums1.length; ++i){
int j = 0;
for(;j < nums2.length; ++j){// j, , , 。
if(nums2[j] == nums1[i])
break;//
}
int exch = nums1[i];
nums1[i] = -1;
for(++j; j < nums2.length; ++j){
if(nums2[j] > exch){// nums2[j] >nums2[j-1] , j 。
nums1[i] = nums2[j];
break;
}
}
}
return nums1;
}
}
운행 시간 은 14ms 로 운행 속도 가 비교적 느리다.
범례 해결 방법:
class Solution {
public int[] nextGreaterElement(int[] nums1, int[] nums2) {
if(nums1.length == 0) return new int[]{};
int[] res = new int[nums1.length];
int max = Integer.MIN_VALUE;
for(int num : nums2){
if(max < num) max = num;
}
int[] map = new int[max + 1];
Arrays.fill(map, -1);
for(int i = 0 ; i < nums2.length ; i ++){
map[nums2[i]] = i;
}
for(int i = 0 ; i < nums1.length ; i ++){
if(nums1[i] >= max) res[i] = -1;
else{
int index = map[nums1[i]];
while(++index < nums2.length){
if(nums2[index] > nums1[i]){
res[i] = nums2[index];
break;
}
}
if(res[i] == 0) res[i] = -1;
}
}
return res;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
0부터 시작하는 LeetCode Day8 「1302. Deepest Leaves Sum」해외에서는 엔지니어의 면접에 있어서 코딩 테스트라고 하는 것이 행해지는 것 같고, 많은 경우, 특정의 함수나 클래스를 주제에 따라 실장한다고 하는 것이 메인이다. 빠른 이야기가 본고장에서도 행해지고 있는 것 같은 코...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.