iT邦幫忙

2024 iThome 鐵人賽

DAY 17
0
佛心分享-刷題不只是刷題

轉生理工組後從零開始的leetcode刷題系列 第 17

day-17[medium.2637]count the number of good subarrays

  • 分享至 

  • xImage
  •  

Given an integer array nums and an integer k, return the number of good subarrays of nums.

A subarray arr is good if it there are at least k pairs of indices (i, j) such that i < j and arr[i] == arr[j].

A subarray is a contiguous non-empty sequence of elements within an array.


題目會給我們一組整數陣列nums和一個整數k,我們要找出「好的子陣列」並返回數量。
好的子陣列其中至少有k對(i,j),使得i小於j而且arr[i]==arr[j]。

我的解題思路:

  1. 老樣子使用雙層for迴圈找出所有子陣列
  2. 再包一層for迴圈去找出有多少能配對的(i,j)
  3. 如果配對數量達k,這就是一個好的子陣列
  4. 統計有多少好的子陣列然後返回

class Solution {
    public long countGood(int[] nums, int k) {
        int n = nums.length;
        int countGood = 0;

        // 遍歷所有子陣列
        for (int start = 0; start<n ; start++) {
            int pair = 0; // 每個子陣列配對數獨立計算!!
            for (int end =start; end<n ; end++) {
                for (int i = start; i < end; i++) {
                    if (nums[i] == nums[end]) {
                        pair++;
                    }
                }
                if (pair >= k) {
                    countGood++;
                }
            }
        }
        return countGood;
    }
}


我一開始的‘int pair = 0’放在第二層for迴圈裡,這導致它只考慮目前end的配對,放在start那層才會包含整個子陣列,總之修正後成功過關!https://ithelp.ithome.com.tw/upload/images/20241002/20169432qGFjmVh5k0.png


上一篇
day-16[medium.2545]sort the student by their Kth score
下一篇
day-18[medium.421]maximum xor of numbers in an array
系列文
轉生理工組後從零開始的leetcode刷題30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言