Please solve the programming task below using a self-contained code snippet in a markdown code block.

Given an array of strings words and an integer k, return the k most frequent strings.
Return the answer sorted by the frequency from highest to lowest. Sort the words with the same frequency by their lexicographical order.
 
Please complete the following python code precisely:
```python
class Solution:
    def topKFrequent(self, words: List[str], k: int) -> List[str]:
```