给定一个单链表,从链表返回一个随机节点的值。 每个节点必须具有相同的选择概率。 跟进: 如果这个链表非常大,而且它的长度不为人知呢? 你能解决这个问题,而不使用额外的空间?
来源:互联网 发布:linux man help 编辑:程序博客网 时间:2024/06/15 08:52
本题源自leetcode 382;
-------------------------------------------------------------
思考:用一个随机函数,来做选择。
代码:
ListNode* head; /** @param head The linked list's head. Note that the head is guaranteed to be not null, so it contains at least one node. */ Solution(ListNode* head) { this->head = head; } /** Returns a random node's value. */ int getRandom() { int res = head->val; ListNode* root = head->next; int i = 2; while(root){ int j = rand() % i; if(j == 0) res = root->val; root = root->next; i++; } return res; }
阅读全文
0 0
- 给定一个单链表,从链表返回一个随机节点的值。 每个节点必须具有相同的选择概率。 跟进: 如果这个链表非常大,而且它的长度不为人知呢? 你能解决这个问题,而不使用额外的空间?
- 给定一个无序单链表头节点head,实现单链表的选择排序,要求:额外空间复杂度为O(1)
- 随机返回一个链表的节点
- 给定一个节点为头节点,从尾到头反过来打印出每个节点的值
- 一个链表的每个节点,有一个指向next指针指向下一个节点,还有一个rand指针指向这个链表中的一个随机节点或NULL,现在要求复制一个单链表来实现这个链表,返回复制后的新链表。
- 给定一个排序的链表,删除所有具有重复数字的节点,从原始列表中只留下不同的数字。
- 输入一个链表的头结点,从尾到头反过来打印每个节点的值。
- 输入一个链表的头结点,从尾到头反过来打印每个节点的值。
- 给定一个链表,一次颠倒链表k的节点并返回其修改列表。如果节点的数量不是k的倍数,那末最后的剩余节点应该保持原样。
- 给定一个链表,链表的每一个节点包含三个属性:1、节点值;2、指向下一个结点的引用;3、随机指向链表内任意一个节点的引用,也能不指向任何节点。复制该链表
- 输入一个链表,从尾到头打印链表每个节点的值
- 输入一个链表,从尾到头打印链表每个节点的值。
- 输入一个链表,从尾到头打印链表每个节点的值。
- 输入一个链表,从尾到头打印链表每个节点的值
- 输入一个链表,从尾到头打印链表每个节点的值。
- 输入一个链表,从尾到头打印链表每个节点的值。
- 输入一个链表,从尾到头打印链表每个节点的值。
- 输入一个链表,从尾到头打印链表每个节点的值
- selenium自动化测试资源整理(含所有版本chrome、chromedriver、firefox下载链接)
- 实战人品预测之二_热门模型xgboost
- 虚拟机开发ios环境复制问题
- Webservice实践(八)如何通过WSDL获取java代码
- udev与devtmpfs
- 给定一个单链表,从链表返回一个随机节点的值。 每个节点必须具有相同的选择概率。 跟进: 如果这个链表非常大,而且它的长度不为人知呢? 你能解决这个问题,而不使用额外的空间?
- pytorch入门(二)——自动求导函数
- Field discoveryClient in com.demo.eureka_client.controller.DcController required a bean of type 'com
- oracle-编码
- Eclipse-设置格式化代码时不格式化注释
- Spring boot之hello world故障
- zoj 3664
- c++ make_heap, pop_heap, push_heap, sort_heap详解
- 数据结构实验之图论七:驴友计划