title: 1679. Max Number of K-Sum Pairs
tags:
- Two Pointers
- hash
categories: leetcode
comments: false
class Solution {
public:
int maxOperations(vector<int>& nums, int k) {
sort(nums.begin(), nums.end());
int l =0, r = nums.size()-1;
int count = 0;
while(l<r){
if(nums[l]+nums[r] == k){
count++;
l++;
r--;
}
else if(nums[l] +nums[r] < k) l++;
else r--;
}
return count;
}
};
class Solution {
public:
int maxOperations(vector<int>& nums, int k) {
unordered_map<int,int> mp;
int n = nums.size(), count=0;
for(int i=0;i<n;++i){
if(mp.count(k - nums[i]) && mp[k-nums[i]]>0){
count++;
mp[k-nums[i]]--;
}
else mp[nums[i]]++;
}
return count;
}
};
- option 1
- time complexity
O(nlogn)
- space complexity
O(1)
- option 2
- time complexity
O(n)
- space complexity
O(n)