less than 1 minute read

<-E 2200> Find All K-Distant Indices in an Array

// Method 1
class Solution {
public:
    vector<int> findKDistantIndices(vector<int>& nums, int key, int k) {
        int n=nums.size();
        vector<int> v;

        for(int i = 0; i < n; i++) {
            if(nums[i] == key) {
                int start = max(0, i - k);
                int end = min(n - 1, i + k);

                if(v.size() != 0)
                    start = max(v[v.size() - 1] + 1, start);

                for(int j = start; j <= end; j++) {
                    v.push_back(j);
                }
            }
        }
        return v;
    }
};

// Method 2
class Solution {
public:
    vector<int> findKDistantIndices(vector<int>& nums, int key, int k) {
        set<int> st;

        for(int i = 0; i < nums.size(); i++){
            if(nums[i] == key){
                for(int j = i - k; j <= i + k; j++){
                    if(j >=0 && j < nums.size())
                        st.insert(j);
                }
            }
        }

        return vector<int>(st.begin(), st.end());
    }
};