面试常见算法题
1、抢红包算法
参考链接
二倍均值法实现的抢红包算法的代码(以下代码由chatGPT生成)
// 抢红包方法
function grabRedPacket(totalAmount, totalPeople) {// 用于存储红包金额let redPackets = [];// 剩余金额let remainAmount = totalAmount * 100;// 剩余人数let remainPeople = totalPeople;// 生成随机数,模拟每个红包的金额for (let i = 0; i < totalPeople; i++) {let randomAmount;if (i < totalPeople - 1) {// 生成随机数,保证最小金额为0.01元randomAmount = Math.floor(Math.random() * (remainAmount / remainPeople * 2 - 1) + 1);randomAmount = Math.min(randomAmount, remainAmount - (totalPeople - i - 1));remainAmount -= randomAmount;remainPeople--;} else {// 最后一次生成的随机数直接设置为剩下的金额randomAmount = remainAmount;}redPackets.push(randomAmount / 100);}return redPackets;
}// 抢红包示例
let totalAmount = 1;
let totalPeople = 100;
console.log(grabRedPacket(totalAmount, totalPeople));
2、二分查找算法
参考链接
以下代码由chatGPT生成
class Node {constructor(value, left = null, right = null) {this.value = value;this.left = left;this.right = right;}
}class BinaryTree {constructor(root = null) {this.root = root;}lookup(value) {return this.lookupNode(this.root, value);}lookupNode(node, value) {if (!node) return false;if (node.value === value) return true;if (value < node.value) {return this.lookupNode(node.left, value);} else {return this.lookupNode(node.right, value);}}
}const tree = new BinaryTree(new Node(10, new Node(5), new Node(15)));
console.log(tree.lookup(10)); // outputs: true
console.log(tree.lookup(5)); // outputs: true
console.log(tree.lookup(15)); // outputs: true
console.log(tree.lookup(20)); // outputs: false
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
