<p>You are given an integer array <code>nums</code> and an integer <code>k</code>.</p>

<p>In one operation, you can pick two numbers from the array whose sum equals <code>k</code> and remove them from the array.</p>

<p>Return <em>the maximum number of operations you can perform on the array</em>.</p>

<p>&nbsp;</p>
<p><strong class="example">Example 1:</strong></p>

<pre>
<strong>Input:</strong> nums = [1,2,3,4], k = 5
<strong>Output:</strong> 2
<strong>Explanation:</strong> Starting with nums = [1,2,3,4]:
- Remove numbers 1 and 4, then nums = [2,3]
- Remove numbers 2 and 3, then nums = []
There are no more pairs that sum up to 5, hence a total of 2 operations.</pre>

<p><strong class="example">Example 2:</strong></p>

<pre>
<strong>Input:</strong> nums = [3,1,3,4,3], k = 6
<strong>Output:</strong> 1
<strong>Explanation:</strong> Starting with nums = [3,1,3,4,3]:
- Remove the first two 3&#39;s, then nums = [1,4,3]
There are no more pairs that sum up to 6, hence a total of 1 operation.</pre>

<p>&nbsp;</p>
<p><strong>Constraints:</strong></p>

<ul>
	<li><code>1 &lt;= nums.length &lt;= 10<sup>5</sup></code></li>
	<li><code>1 &lt;= nums[i] &lt;= 10<sup>9</sup></code></li>
	<li><code>1 &lt;= k &lt;= 10<sup>9</sup></code></li>
</ul>

class Solution:
    def maxOperations(self, nums: List[int], k: int) -> int:
        op = 0
        l = len(nums)
        save = {0:0}
        while l > 0:
            if l >= 2:
                l -= 1
                zero = nums[0]
                nums.pop(0)
                if zero < k:
                    remain = k - zero
                    if remain not in save.keys():
                        save[remain] = 0
                        if zero not in save.keys():
                            save[zero] = 1
                        else:
                            save[zero] += 1
                    else:
                        if save[remain] != 0:
                            save[remain] -= 1
                            op += 1  
                        else:
                            save[zero] += 1
            else:
                remain = k - nums[0]
                if remain in save.keys() and save[remain] > 0:
                    op+=1 
                return op    

                















        # if max(nums) >= k:
        #     while count+point<l:
        #         if nums[point] >= k:
        #             nums.pop(point)
        #             count+=1
        #         else: 
        #             point+=1
                
        # l = l-count
        # if l==1:
        #     return 0
        

        # nums = sorted(nums)
        # print(nums)

        # jump = []
        # for i, ele in enumerate(nums[:-1]):
        #     if i in jump:
        #         continue
        #     else:
        #         right = l-1
        #         while right > i:
        #             if right in jump:
        #                 right-=1
        #             else:
        #                 add = ele + nums[right]
                        
        #                 if add == k:
        #                     n+=1
        #                     print(ele,nums[right])
        #                     jump.append(right)
        #                     break
        #                 else:
        #                     right-=1
        return n
            


        


        



        
        


27000