shuffle leetcode算法篇,常见算法总结 打乱数组More info: leetcode384题目描述简化给你一个数组,对其进行随机打乱 12关键问题就是随机化操作,要保证数组中每一个数字在某一个位置出现的机率是等可能的。可以从后面往前面进行遍历,因为这样方便设置随机位置随机位置j = Math.floor(Math.random() * (i + 1)); 具体实现这里对leetcode代码做了简化 1234567891011121314function shuffle(array) { // 这里考虑从后面往前面进行遍历,不容易出错 for(let i = array.length - 1; i > 0; --i){ let j = Math.floor(Math.random() * (i + 1));//这里一定要进行加1操作,因为这样可以任意一个数字可以和自己进行交换 let temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } return array;}// 测试console.log(shuffle([1,2,-2,3])); 分析总结1234注意点:1、保证随机化的操作,必须保证随机的下标只能在没有遍历的范围中随机2、从后往前遍历更容易确定随机的下标3、随机的下标必须包含当前下标自身 LeetCode #leetcode #算法 #打乱数组 #随机化 shuffle https://zbdev.online/2024/02/10/shuffle/ 作者 zzb 发布于 2024年2月10日 许可协议 integerBreak 上一篇 最长公共前缀(longestCommonPrefix) 下一篇