LeetCode in Kotlin

523. Continuous Subarray Sum

Medium

Given an integer array nums and an integer k, return true if nums has a good subarray or false otherwise.

A good subarray is a subarray where:

Note that:

Example 1:

Input: nums = [23,2,4,6,7], k = 6

Output: true

Explanation: [2, 4] is a continuous subarray of size 2 whose elements sum up to 6.

Example 2:

Input: nums = [23,2,6,4,7], k = 6

Output: true

Explanation: [23, 2, 6, 4, 7] is an continuous subarray of size 5 whose elements sum up to 42. 42 is a multiple of 6 because 42 = 7 * 6 and 7 is an integer.

Example 3:

Input: nums = [23,2,6,4,7], k = 13

Output: false

Constraints:

Solution

class Solution {
    fun checkSubarraySum(nums: IntArray, k: Int): Boolean {
        val map: MutableMap<Int, Int> = HashMap()
        var sum = 0
        map[0] = -1
        for (i in nums.indices) {
            sum += nums[i]
            val remainder = sum % k
            if (map.containsKey(remainder)) {
                if (map[remainder]!! + 1 < i) {
                    return true
                }
            } else {
                map[remainder] = i
            }
        }
        return false
    }
}