leetcode 384. Shuffle an Array
2024-09-07 15:56:21
384. Shuffle an Array
c++ random函数:https://www.jb51.net/article/124108.htm
rand()不需要参数,它会返回一个从0到最大随机数的任意整数,最大随机数的大小通常是固定的一个大整数。 这样,如果你要产生0~10的10个整数,可以表达为:
int
N =
rand
() % 11;
这样,N的值就是一个0~10的随机数,如果要产生1~10,则是这样:
总结来说,可以表示为:
a +
rand
() % n
其中的a是起始值,n是整数的范围。
https://www.cnblogs.com/grandyang/p/5783392.html
Knuth shuffle算法:
https://yjk94.wordpress.com/2017/03/17/%E6%B4%97%E7%89%8C%E7%9A%84%E6%AD%A3%E7%A1%AE%E5%A7%BF%E5%8A%BF-knuth-shuffle%E7%AE%97%E6%B3%95/
不能直接随机取数字,只能随机取之前的数字才能保证等概率。
注意:取余i+1才能取到为i的余数。遍历到i的时候,必须有交换i自己这一项,所以必须是i+1。
https://leetcode.com/problems/shuffle-an-array/discuss/85965/C++-Knuth-Shuffle-(Fisher-Yates-Shuffle)-Implementation-(352-ms)
class Solution {
public:
Solution(vector<int> nums){
for(auto num : nums)
v.push_back(num);
} /** Resets the array to its original configuration and return it. */
vector<int> reset() {
return v;
} /** Returns a random shuffling of the array. */
vector<int> shuffle() {
vector<int> res = v;
for (int i = ; i < res.size(); ++i) {
int t = rand() % (i + );
swap(res[i], res[t]);
}
return res;
} private:
vector<int> v;
};
最新文章
- 重邮二进制日天群-pwn1
- Cookie, LocalStorage 与 SessionStorage
- Tree菜单 复选框选中控制DEMO
- Mybatis + SpringMVC + Maven实现分页查询
- kail-linux my need
- dubbo通信协议之对比
- spring源码学习之【准备】jdk动态代理例子
- [Everyday Mathematics]20150221
- gprof
- 【Stage3D学习笔记续】山寨Starling(一):从事件说起
- Qt中文乱码问题(比较清楚,同一个二进制串被解释成不同的语言)
- 配置文件的读取添加webconfig
- PS学习
- C# 课堂总结2-数据类型及转换方式
- NFTS数据流
- ASP.NET MVC 执行流程介绍
- 《剑指offer》旋转数组中的最小数字
- 修改注册表.exe的文件目录
- android:View的setTag和getTag
- cpu高占用,线程堆栈,jstack,pstack,jmap, kill -3 pid,java(weblogic,tomcat)
热门文章
- 当安装、卸载件包时,出现依赖问题 error: Failed dependencies
- 利用webhook实现发送通知到Slack
- 乔布斯在位时,库克实质上已经在做CEO的工作了:3星|《蒂姆&#183;库克传》
- 使用CIFAR-10样本数据集测试卷积神经网络(ConvolutionalNeuralNetwork,CNN)
- 用 Python 加密文件
- pycharm注册使用
- shiro认证+盐加密
- QQ首页 案例
- $spfa-dfs$优化板子
- C/C++输入