链表随机节点
解法一:
链表转数组,直接调用随机函数返回即可
class Solution { vector<int> vt; public: Solution(ListNode *head) { while (head) { vt.push_back(head->val); head = head->next; } } int getRandom() { return vt[rand() % vt.size()]; } };
解法二:
水塘抽样法
基本的应用:证明点击跳转我的另一篇博客
class Solution { public: ListNode* root; Solution(ListNode* head) { root=head; } int getRandom() { int ans = root->val; int id = 1; auto t = root; while(t!=NULL){ if(rand()%id==0){ ans=t->val; } id++; t=t->next; } return ans; } };
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】