LeetCode Entry

2053. Kth Distinct String in an Array

05.08.2024 easy 2024 kotlin rust

kth unique

2053. Kth Distinct String in an Array easy blog post substack youtube 1.webp

Join me on Telegram

https://t.me/leetcode_daily_unstoppable/693

Problem TLDR

kth unique #easy

Intuition

Filter out all the duplicates first.

Approach

We can use a HashMap for counter or just two HashSets. Let’s use some API:

  • Kotlin: groupingBy.eachCount, filter
  • Rust: filter, skip, next

Complexity

  • Time complexity: \(O(n)\)

  • Space complexity: \(O(1)\)

Code


    fun kthDistinct(arr: Array<String>, k: Int) = arr
        .groupingBy { it }.eachCount().filter { it.value == 1 }
        .keys.elementAtOrNull(k - 1) ?: ""

    pub fn kth_distinct(arr: Vec<String>, k: i32) -> String {
        let (mut uniq, mut dup) = (HashSet::new(), HashSet::new());
        for s in &arr { if !uniq.insert(s) { dup.insert(s); }}
        arr.iter().filter(|&s| !dup.contains(s)).skip(k as usize - 1)
           .next().unwrap_or(&"".to_string()).to_string()
    }