Leetcode 2453. Destroy Sequential Targets | rust 实现
  DnMsOgXyQRvq 7天前 43 0

题解

问题描述

给定一个整数数组 nums 和一个整数 space,我们需要找到一个目标值,使得该目标值在 nums 中的出现次数最多。如果有多个目标值出现次数相同,则返回最小的目标值。

解题思路

  1. 哈希表统计:使用哈希表 map 来统计每个 seed % space 的出现次数,题干中给出的等式等价为 nums[n] = nums[i] + c * space,在我们知道nums[n]的前提下,可以通过nums[n]对space取余,来得到nums[i],c是常数,不考虑。这个过程相当于是对题干等式的逆推。
  2. 遍历数组:再次遍历 nums,根据哈希表中的统计信息来确定出现次数最多的目标值,注意这里的key是 seed % space
  3. 更新结果:在遍历过程中,维护一个 max 变量来记录当前最大出现次数,并更新 result 为对应的目标值。

代码实现

/*
 * @lc app=leetcode id=2453 lang=rust
 *
 * [2453] Destroy Sequential Targets
 */

// @lc code=startuse std::collections::HashMap;
impl Solution {
    pub fn destroy_targets(nums: Vec<i32>, space: i32) -> i32 {
        use std::collections::HashMap;
    
        let mut map: HashMap<i32, i32> = HashMap::new();
        for &seed in &nums {
            let key = seed % space;
            *map.entry(key).or_insert(0) += 1;
        }
    
        let mut max = 0;
        let mut result = i32::MAX;
        for &seed in &nums {
            match map.get(&(seed % space)) {
                Some(&num) => {
                    if num > max {
                        result = seed;
                        max = num;
                    } else if num == max && seed < result {
                        result = seed;
                    }
                },
                None => {}
            }
        }
    
        return result;
    }
}
// @lc code=end

代码中使用了 Rust 的标准库 HashMap 来实现哈希表,确保了高效的查找和插入操作。通过两次遍历,时间复杂度为 O(n),空间复杂度为 O(k),其中 n 是数组长度,k 是不同的 seed % space 值的数量

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 7天前 0

暂无评论

推荐阅读
  Zq77RPSHuidF   2024年04月27日   103   0   0 Rust
  qn1eRyGNKz7T   2024年03月07日   132   0   0 Rust
  qn1eRyGNKz7T   2024年03月19日   277   0   0 Rust
  qn1eRyGNKz7T   2024年02月29日   174   0   0 Rust
  nciPP1FRH5QS   2024年08月14日   41   0   0 Rust
  qn1eRyGNKz7T   2024年03月25日   177   0   0 Rust
  qn1eRyGNKz7T   2024年04月01日   326   0   0 Rust
  slt0fBKTgQt8   2024年08月07日   65   0   0 Rust
  qn1eRyGNKz7T   2024年03月13日   210   0   0 Rust
  6m3lfiEqOqHp   2024年08月07日   42   0   0 Rust
  3Vc6H13Lg7Nk   2024年04月28日   84   0   0 Rust
DnMsOgXyQRvq