Fantasy-JXF
  • Introduction
  • 机器学习
    • 机器学习基础
    • 机器学习实践
    • 机器学习算法
    • 集成学习
  • 深度学习
    • 深度学习基础
    • 深度学习实践
    • CNN
    • RNN
    • 优化算法
    • 序列建模
    • 《深度学习》整理
    • 术语表
  • 自然语言处理
    • NLP发展趋势
    • 自然语言处理基础
    • 句嵌入
    • 词向量
    • 多模态
    • 视觉问答(VQA)综述
    • 深度查询理解
      • 综述
  • 计算机视觉
    • 基本模型
  • 数学
    • 概率论
    • 微积分的本质
    • 深度学习的核心
  • 算法
    • 字符串
    • 数据结构
    • 数据结构Advanced
    • 双指针
    • 动态规划
    • 区间问题
    • 排列组合
    • 数学问题
    • 洗牌/采样/随机数
    • 大数运算
    • 海量数据处理
    • IO模板
    • 必备算法
    • LeetCode
    • 剑指Offer
    • 面试真题
  • 编程
    • C++基础
    • C++面向对象
    • C++左值与右值
    • Python基础
  • 笔试面经
    • 360
    • iHandy
    • 作业帮
    • 字节跳动
    • 小米
    • 度小满
    • 快手
    • 招行
    • 搜狐畅游
    • 滴滴
    • 爱奇艺
    • 百度
    • 百度2
    • 百度3
    • 百词斩
    • 腾讯
    • 迅雷
    • 顺丰
    • 旷视
    • 爱笔
    • 魔门塔
    • 搜狐
由 GitBook 提供支持
在本页
  • Index
  • 给定 n 个[0,n)区间内的数,统计每个数出现的次数,不使用额外空间

这有帮助吗?

  1. 算法

面试真题

  • 记录一些暂时没找到原型的面试真题

Index

  • [给定 n 个[0,n)区间内的数,统计每个数出现的次数,不使用额外空间](#给定-n-个0n区间内的数统计每个数出现的次数不使用额外空间)

给定 n 个[0,n)区间内的数,统计每个数出现的次数,不使用额外空间

头条

思路:

  • 基于两个基本运算:

    若 i ∈ [0, n),则有
      (t*n + i) % n = i
      (t*n + i) / n = t
  • 顺序遍历每个数 i,i 每出现一次,则 nums[i] += n

  • 遍历结束后,i 出现的次数,即 nums[i] / n,同时利用 nums[i] % n 可以还原之前 nums[i] 上的数。

C++(未测试)

vector<int> nums;

void init(vector<int>& nums) {
    for (int i = 0; i < nums.size(); i++) {
        nums[nums[i]] += n;
    }
}

int cnt(int k) {
    return nums[k] / n;
}
上一页剑指Offer下一页编程

最后更新于6年前

这有帮助吗?