C++ | Leetcode C++题解之第398题随机数索引

题目:

题解:

cpp 复制代码
class Solution {
    vector<int> &nums;
public:
    Solution(vector<int> &nums) : nums(nums) {}

    int pick(int target) {
        int ans;
        for (int i = 0, cnt = 0; i < nums.size(); ++i) {
            if (nums[i] == target) {
                ++cnt; // 第 cnt 次遇到 target
                if (rand() % cnt == 0) {
                    ans = i;
                }
            }
        }
        return ans;
    }
};
相关推荐
程序员-King.6 分钟前
day152—回溯—电话号码的字母组合(LeetCode-17)
算法·leetcode·深度优先·递归
啟明起鸣32 分钟前
【Linux 项目管理工具】GDB 调试是现成 C/C++ 项目的 “造影剂”,用来分析项目的架构原理
linux·c语言·c++
呼啦啦56135 分钟前
【C++入门】
c++
苦藤新鸡37 分钟前
19.旋转输出矩阵
c++·算法·leetcode·力扣
小范馆1 小时前
C++ 编译方法对比:分步编译 vs 一步到位
java·开发语言·c++
云泽8081 小时前
C++ 继承进阶:默认成员函数、多继承问题与继承组合选型
开发语言·c++
一颗青果1 小时前
C++下的atomic | atmoic_flag | 内存顺序
java·开发语言·c++
Tisfy1 小时前
LeetCode 1292.元素和小于等于阈值的正方形的最大边长:二维前缀和(无需二分)+抽象速懂的描述
算法·leetcode·职场和发展
跃渊Yuey1 小时前
【Linux】Linux进程信号产生和保存
linux·c语言·c++·vscode
程序员-King.1 小时前
day156—回溯—组合总和(LeetCode-216)
算法·leetcode·回溯