Try   HackMD

LeetCode 3254. Find the Power of K-Size Subarrays I

https://leetcode.com/problems/find-the-power-of-k-size-subarrays-i/description/

題目大意

給定一個長度為 n 的整數陣列 nums 和正整數 k

定義 power of array :

  • 若陣列中的所有元素都是連續且升序排序,則為陣列的最大元素
  • 否則,為 -1

求出 nums 中所有長度為 k 之子陣列 power
回傳長度 n - k + 1 的整數陣列,其中 results[i] 是子陣列 nums[i..(i + k - 1)] 的 power

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

思考

C++ 參考答案:

class Solution
{
public:
    vector<int> resultsArray(vector<int> &nums, int k)
    {
        if (k == 1)
            return nums;

        const int n = nums.size();
        vector<int> ans(n - k + 1, -1);

        for (int i = 0, len = 1; i < n - 1; ++i)
        {
            if (nums[i] + 1 == nums[i + 1])
                ++len;
            else
                len = 1;

            if (len >= k)
                ans[i - k + 2] = nums[i + 1];
        }

        return ans;
    }
};

Go 參考答案:

func resultsArray(nums []int, k int) []int {
	if k == 1 {
		return nums
	}

	n := len(nums)
	ans := make([]int, n-k+1)
	len := 1

	for i := 1; i < n; i++ {
		if nums[i-1]+1 == nums[i] {
			len++
		} else {
			len = 1
		}
		if i >= k-1 {
			if len >= k {
				ans[i-k+1] = nums[i]
			} else {
				ans[i-k+1] = -1
			}

		}
	}

	return ans
}