[LeetCode/Kotlin]Easy - 2016. Maximum Difference Between Increasing Elements
문제
Given a 0-indexed integer array nums of size n, find the maximum difference between nums[i] and nums[j] (i.e., nums[j] - nums[i]), such that 0 <= i < j < n and nums[i] < nums[j].
Return the maximum difference. If no such i and j exists, return -1.
Example 1:
Input: nums = [7,1,5,4]
Output: 4
Explanation:
The maximum difference occurs with i = 1 and j = 2, nums[j] - nums[i] = 5 - 1 = 4.
Note that with i = 1 and j = 0, the difference nums[j] - nums[i] = 7 - 1 = 6, but i > j, so it is not valid.
Example 2:
Input: nums = [9,4,3,2]
Output: -1
Explanation:
There is no i and j such that i < j and nums[i] < nums[j].
Example 3:
Input: nums = [1,5,2,10]
Output: 9
Explanation:
The maximum difference occurs with i = 0 and j = 3, nums[j] - nums[i] = 10 - 1 = 9.
Constraints:
- n == nums.length
- 2 <= n <= 1000
- 1 <= nums[i] <= 109
풀이
나의 풀이법
풀이 접근 과정
이전에 풀었던 LeetCode 121번과 연결되는 문제였다. 그래서인지 이번엔 다른 접근이 필요 없이 그냥 후루룩 금방 풀었다.
최종 소스코드
위의 코드는 Kotlin으로 작성된 Solution 클래스의 maximumDifference 함수입니다. 이 함수는 정수 배열 **nums**를 입력으로 받아서 배열 내에서 두 요소의 차이가 최대인 값을 찾아 반환합니다.
함수 내부에서 answer 변수와 min 변수를 초기화합니다. answer 변수는 최대 차이 값을 저장하기 위한 변수로, **-1**로 초기화됩니다. min 변수는 현재까지 탐색한 배열 요소 중 가장 작은 값을 저장하기 위한 변수로, **Int.MAX_VALUE**로 초기화됩니다.
함수는 nums 배열을 forEach 함수를 사용하여 순회합니다. 순회 중에는 각 요소를 it 변수로 받습니다.
순회하는 동안, 현재 요소 **it**가 **min**보다 작거나 같은지 확인합니다. 만약 그렇다면, min 값을 **it**로 갱신합니다. 이는 배열에서 가장 작은 값을 찾기 위한 과정입니다.
그렇지 않다면 (**it**이 **min**보다 큰 경우), **it - min**의 값이 현재까지의 최대 차이인 **answer**보다 큰지 확인합니다. 만약 그렇다면, answer 값을 **it - min**으로 갱신합니다. 이는 현재까지의 최대 차이를 갱신하는 과정입니다.
순회가 끝나면, 최대 차이인 answer 값을 반환합니다.
이 코드의 시간 복잡도는 O(n)입니다.
class Solution {
fun maximumDifference(nums: IntArray): Int {
var answer = -1
var min = Int.MAX_VALUE
nums.forEach {
if (it <= min) min = it
else if (it-min > answer) answer = it-min
}
return answer
}
}
'LeetCode > Kotlin | Easy' 카테고리의 다른 글
[LeetCode/Kotlin]Easy - 938. Range Sum of BST (0) | 2023.05.23 |
---|---|
[LeetCode/Kotlin]Easy - 70. Climbing Stairs (0) | 2023.05.23 |
[LeetCode/Kotlin]Easy - 404. Sum of Left Leaves (0) | 2023.05.15 |
[LeetCode/Kotlin]Easy - 121. Best Time to Buy and Sell Stock (0) | 2023.05.11 |
[LeetCode/Kotlin]Easy - 20. Valid Parentheses (0) | 2023.05.09 |