297.打乱数组

打乱一个没有重复元素的数组。

示例:

// 以数字集合 1, 2 和 3 初始化数组。
int[] nums = {1,2,3};
Solution solution = new Solution(nums);
// 打乱数组 [1,2,3] 并返回结果。任何 [1,2,3]的排列返回的概率应该相同。
solution.shuffle();
// 重设数组到它的初始状态[1,2,3]。
solution.reset();
// 随机返回数组[1,2,3]打乱后的结果。
solution.shuffle();

代码

class Solution {
public:
    Solution(vector<int> nums): v(nums) {}
    /** 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 = 0; i < res.size(); ++i) {
            int t = i + rand() % (res.size() - i);
            swap(res[i], res[t]);
        }
        return res;
    } 
private:
    vector<int> v;
};
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、数组数组是一组使用数字索引的对象,这些对象属于同一种类型。虽然C#为创建数组提供了直接的语言支持,但通用类型系...
    CarlDonitz阅读 3,984评论 0 1
  • 怎么也不会想到,只有在电影或者文学中才能看见的情节,会有一天发生在我的身上,爱上一个有夫之妇,一个八岁孩子的母亲,...
    范宽阅读 3,021评论 0 0
  • 进程A等待进程B释放他的资源,B又等待A释放他的资源,这样就互相等待形成死锁 产生死锁的必要条件 互斥:指进程对所...
    李波小丑阅读 4,567评论 0 2
  • 嗯,是这样的,继前边二十多个同学在毛概课的生动演讲,悄悄地轮到我了。明天下午就要上台演讲了,但我异常淡定,...
    98的老yellow阅读 1,643评论 0 0

友情链接更多精彩内容