اكتب دالة تأخذ معلمتين، قائمة من الأعداد الصحيحة `nums` وعدد صحيح `x`، وتقوم بإرجاع **فهرس** آخر تواجد لـ`x` في `nums`.

**توقيع الوظيفة:** `def last_occurrence(nums: List[int], x: int) -> int:`

**مدخل:**

معلمات الإدخال هي:
1. قائمة الأعداد الصحيحة `nums` (1 <= len(nums) <= 10^5): قائمة الأعداد الصحيحة للبحث عن آخر تواجد لـ `x`. يمكن أن تحتوي على عناصر مكررة.
2. عدد صحيح `x` (-10^9 <= x <= 10^9): العنصر المطلوب العثور على آخر تواجد له في `nums`.

**انتاج:**

يجب أن تعرض الدالة عددًا صحيحًا يمثل فهرس آخر تواجد لـ `x` في قائمة `nums`. إذا لم يتم العثور على `x` في `nums`، فيجب أن تُرجع الدالة -1.

**أمثلة:**

```
last_occurrence([1, 2, 3, 4, 5, 4, 3, 2, 1], 3) => 6
last_occurrence([1, 2, 3, 4, 5, 4, 3, 2, 1], 6) => -1
last_occurrence([1, 2, 3, 4, 5, 4, 3, 2, 1], 1) => 8
last_occurrence([3, 3, 3, 3], 3) => 3
```

**ملحوظة:**

في المثال الأول، آخر تواجد لـ `3` في القائمة `[1, 2, 3, 4, 5, 4, 3, 2, 1]` هو في الفهرس `6`.
{"evolved_from": null, "kind": "synthetic", "source": "argilla/DistiCoder-dpo-binarized"}