LeetCode:384. Shuffle an Array
来源:互联网 发布:c 调用程序的编程 编辑:程序博客网 时间:2024/06/06 14:26
<!-- @END Action Button--> <div class="question-description"> <p></p><p>Shuffle a set of numbers without duplicates.
Example:
// Init an array with set 1, 2, and 3.int[] nums = {1,2,3};Solution solution = new Solution(nums);// Shuffle the array [1,2,3] and return its result. Any permutation of [1,2,3] must equally likely to be returned.solution.shuffle();// Resets the array back to its original configuration [1,2,3].solution.reset();// Returns the random shuffling of array [1,2,3].solution.shuffle();
</div> <!-- Interview Feedback --> <div id="interviewed-div"> <hr class="line dotted interview-hr"> <div class="close-survey btn btn-xs pull-right" onclick="document.getElementById("interviewed-div").style.display = "none";"> <i class="fa fa-times-circle" aria-hidden="true"></i> </div> <form id="interviewed-form" method="post" action="/problems/api/interviewed/"> <input type="hidden" name="csrfmiddlewaretoken" value="mLjSMKnuwWqj0QTix6UG5P5aSsNacTx8wZ0fWWwiZrNIMj2PFe6hFCRpkmBZrMpR"> <input type="hidden" name="question_id" value="384"> <input type="hidden" name="feedback" value="Thanks for your feedback."> <input type="hidden" name="option"> <input type="hidden" name="is_interviewed" value="false"> <input type="hidden" name="time_option"> <input type="hidden" name="company_id" value="0"> <input type="hidden" name="interviewedstats_id" value="0"> </form> <div id="survey"> <div id="general_questions"> <span>Seen this question in a real interview before? </span> <span class="text-warning chosen_option text-bold"></span> <span id="yes-or-no-options"> <div value="true" name="is_interviewed" id="yes" follow_up="#yes_questions" class="submit btn btn-default btn-xs"> Yes </div> <div value="false" name="is_interviewed" id="no" class="submit btn btn-default btn-xs"> No </div> </span> </div> <div id="yes_questions" class="hide"> <span>When did you encounter this question? </span> <span class="text-warning chosen_option text-bold"></span> <span> <div value="0" follow_up="#company_questions" name="time_option" class="submit btn btn-default btn-xs"> last week </div> <div value="1" follow_up="#company_questions" name="time_option" class="submit btn btn-default btn-xs"> last month </div> <div value="2" follow_up="#company_questions" name="time_option" class="submit btn btn-default btn-xs"> last 3 month </div> <div value="3" follow_up="#company_questions" name="time_option" class="submit btn btn-default btn-xs"> last 6 month </div> <div value="4" follow_up="#company_questions" name="time_option" class="submit btn btn-default btn-xs"> more than 6 months </div> <div value="5" follow_up="#company_questions" name="time_option" class="submit btn btn-default btn-xs"> other </div> </span> </div> <div id="company_questions" class="hide"> <span>Which company? </span> <span class="text-warning chosen_option text-bold"></span> <span id="company_list"> <div value="54" name="company_id" class="submit btn btn-default btn-xs"> Adobe </div> <div value="69" name="company_id" class="submit btn btn-default btn-xs"> Aetion </div> <div value="49" name="company_id" class="submit btn btn-default btn-xs"> Airbnb </div> <div value="59" name="company_id" class="submit btn btn-default btn-xs"> Alibaba </div> <div value="42" name="company_id" class="submit btn btn-default btn-xs"> Amazon </div> <div value="47" name="company_id" class="submit btn btn-default btn-xs"> Apple </div> <div value="55" name="company_id" class="submit btn btn-default btn-xs"> Baidu </div> <div value="43" name="company_id" class="submit btn btn-default btn-xs"> Bloomberg </div> <div value="70" name="company_id" class="submit btn btn-default btn-xs"> Cloudera </div> <div value="71" name="company_id" class="submit btn btn-default btn-xs"> Coursera </div> <div value="92" name="company_id" class="submit btn btn-default btn-xs"> Cryptic Studios </div> <div value="56" name="company_id" class="submit btn btn-default btn-xs"> Dropbox </div> <div value="63" name="company_id" class="submit btn btn-default btn-xs"> eBay </div> <div value="72" name="company_id" class="submit btn btn-default btn-xs"> Epic Systems </div> <div value="73" name="company_id" class="submit btn btn-default btn-xs"> Expedia </div> <div value="40" name="company_id" class="submit btn btn-default btn-xs"> Facebook </div> <div value="74" name="company_id" class="submit btn btn-default btn-xs"> Fallible </div> <div value="93" name="company_id" class="submit btn btn-default btn-xs"> Games </div> <div value="75" name="company_id" class="submit btn btn-default btn-xs"> Gilt Groupe </div> <div value="76" name="company_id" class="submit btn btn-default btn-xs"> GoDaddy </div> <div value="94" name="company_id" class="submit btn btn-default btn-xs"> Goo </div> <div value="39" name="company_id" class="submit btn btn-default btn-xs"> Google </div> <div value="95" name="company_id" class="submit btn btn-default btn-xs"> Hedvig </div> <div value="77" name="company_id" class="submit btn btn-default btn-xs"> Houzz </div> <div value="64" name="company_id" class="submit btn btn-default btn-xs"> Hulu </div> <div value="65" name="company_id" class="submit btn btn-default btn-xs"> Indeed </div> <div value="78" name="company_id" class="submit btn btn-default btn-xs"> Intuit </div> <div value="60" name="company_id" class="submit btn btn-default btn-xs"> IXL </div> <div value="45" name="company_id" class="submit btn btn-default btn-xs"> LinkedIn </div> <div value="61" name="company_id" class="submit btn btn-default btn-xs"> LiveRamp </div> <div value="79" name="company_id" class="submit btn btn-default btn-xs"> Lyft </div> <div value="80" name="company_id" class="submit btn btn-default btn-xs"> MAQ Software </div> <div value="66" name="company_id" class="submit btn btn-default btn-xs"> Mathworks </div> <div value="41" name="company_id" class="submit btn btn-default btn-xs"> Microsoft </div> <div value="81" name="company_id" class="submit btn btn-default btn-xs"> NetEase </div> <div value="82" name="company_id" class="submit btn btn-default btn-xs"> Netsuite </div> <div value="57" name="company_id" class="submit btn btn-default btn-xs"> Palantir </div> <div value="96" name="company_id" class="submit btn btn-default btn-xs"> Palantir Technologies </div> <div value="67" name="company_id" class="submit btn btn-default btn-xs"> Pinterest </div> <div value="53" name="company_id" class="submit btn btn-default btn-xs"> Pocket Gems </div> <div value="83" name="company_id" class="submit btn btn-default btn-xs"> Poynt </div> <div value="97" name="company_id" class="submit btn btn-default btn-xs"> Pure </div> <div value="84" name="company_id" class="submit btn btn-default btn-xs"> Pure Storage </div> <div value="85" name="company_id" class="submit btn btn-default btn-xs"> Rackspace </div> <div value="98" name="company_id" class="submit btn btn-default btn-xs"> Riot </div> <div value="86" name="company_id" class="submit btn btn-default btn-xs"> Riot Games </div> <div value="87" name="company_id" class="submit btn btn-default btn-xs"> Samsung </div> <div value="48" name="company_id" class="submit btn btn-default btn-xs"> Snapchat </div> <div value="88" name="company_id" class="submit btn btn-default btn-xs"> Square </div> <div value="99" name="company_id" class="submit btn btn-default btn-xs"> Storage </div> <div value="68" name="company_id" class="submit btn btn-default btn-xs"> Tencent </div> <div value="100" name="company_id" class="submit btn btn-default btn-xs"> TinyCo </div> <div value="46" name="company_id" class="submit btn btn-default btn-xs"> Twitter </div> <div value="58" name="company_id" class="submit btn btn-default btn-xs"> Two Sigma </div> <div value="44" name="company_id" class="submit btn btn-default btn-xs"> Uber </div> <div value="89" name="company_id" class="submit btn btn-default btn-xs"> Valve </div> <div value="90" name="company_id" class="submit btn btn-default btn-xs"> WAP </div> <div value="62" name="company_id" class="submit btn btn-default btn-xs"> Works Applications </div> <div value="52" name="company_id" class="submit btn btn-default btn-xs"> Yahoo </div> <div value="101" name="company_id" class="submit btn btn-default btn-xs"> Yahoo! </div> <div value="51" name="company_id" class="submit btn btn-default btn-xs"> Yelp </div> <div value="91" name="company_id" class="submit btn btn-default btn-xs"> Zappos </div> <div value="50" name="company_id" class="submit btn btn-default btn-xs"> Zenefits </div> <a><span id="show_add_company" class="fa fa-plus text-warning" title="Add a new company"></span></a> <span id="add_company_panel"> <input id="new_company" type="text" class="ui-autocomplete-input" autocomplete="off"> <button id="add_company" class="btn btn-success btn-xs">Add Company</button> </span> </span> </div> </div> <div id="interviewed-state"> </div> </div> <!-- @END Interview Feedback --></div>
题意:洗牌或者复原。
分析:洗牌的过程就是等概率的返回全排列中的某一个排列,而全排列是通过相互交换位置得到的,因此,洗牌也可以通过相互交换位置得到。如何确定等概率,即两两交换的概率相同,因此有:
for(int i=0;i
class Solution { int[]base; public Solution(int[] nums) { base=nums; } /** Resets the array to its original configuration and return it. */ public int[] reset() { return base; } /** Returns a random shuffling of the array. */ public int[] shuffle() { int[]nums=base.clone(); Random rand=new Random(); for(int i=0;i<nums.length;i++){ swap(nums,rand.nextInt(i+1),i); } return nums; } public void swap(int[]nums,int a,int b){ int temp=nums[a]; nums[a]=nums[b]; nums[b]=temp; }}
参考链接:http://bookshadow.com/weblog/2016/08/12/leetcode-shuffle-array/
阅读全文
0 0
- [leetcode] 384. Shuffle an Array
- 【leetcode】384. Shuffle an Array
- 384.[LeetCode]Shuffle an Array
- [LeetCode]384. Shuffle an Array
- [LeetCode] 384. Shuffle an Array
- LeetCode 384. Shuffle an Array
- LeetCode 384. Shuffle an Array
- LeetCode 384. Shuffle an Array
- [Leetcode]384. Shuffle an Array
- 【LeetCode】 384. Shuffle an Array
- [leetcode]384. Shuffle an Array
- LeetCode 384. Shuffle an Array
- [LeetCode]384. Shuffle an Array
- [LeetCode]384. Shuffle an Array
- leetcode 384. Shuffle an Array
- 384. Shuffle an Array [Leetcode]
- LeetCode:384. Shuffle an Array
- 【Leetcode】Shuffle an Array
- 【ExtJs学习笔记】4.DOM操作
- 矩阵快速幂
- PAT-乙级-1016-部分A+B
- LeetCode--4Sum
- 栈(c语言)
- LeetCode:384. Shuffle an Array
- 编程杂记--事务相关
- LintcodeA + B 问题
- (CodeForces
- Linux进阶之 rmdir 命令
- ElementTree
- I
- Java异常之try,catch,finally,throw,throw
- POJ