这是一次面试的时候,别人问我的,当时回答的不太好。

题目描述:

即在两个有序链表中查找第k大的元素,相等的元素做一个元素处理。

{1,3,5}, {2,4,6},这是简单的情况,查找第2大的元素则是 2。

{1,3, 3,3, 5},{2,3,3,4,6},稍微复杂,查找第3大元素则是3,第4大元素 则是4.

解答:

其实我们可以借鉴合并有序链表的方法来解决这个问题。

算法实现如下:

struct node{ int data; node* next; }; typedef node* List; int findKthElement(List &list1, List &list2, int k) { List pList1 = list1; List pList2 = list2; List pCurNode = NULL; int count = 0; while(pList1 && pList2) { if (pList1->data < pList2->data) { pCurNode = pList1; pList1 = pList1->next; count++; } else if (pList1->data > pList2->data) { pCurNode = pList2; pList2 = pList2->next; count++; } else { count++; pCurNode = pList1; int temp = pList1->data; List p = pList1->next; while(p) { if (p->data != temp) { pList1 = p; break; } p = p->next; } p = pList2->next; while(p) { if (p->data != temp) { pList2 = p; } p = p->next; } } if (count == k) { return pCurNode->data; } } if (pList1 == NULL && pList2 == NULL) { return -1; } List rest = (pList1 != NULL) ? pList1 : pList2; while(rest) { count++; if (count == k) { return rest->data; } rest = rest->next; } return -1; }

在两个有序链表中查找第K大元素。相关推荐

  1. 网易_在数组中查找前K个元素

    笔试题,最后一题 查找网易云音乐中播放量最大的前K个歌曲. 换句话说,就是在数组中查找前K大元素. 大致有以下几个思路. 1.第一感觉就是对数组进行降序全排序,然后返回前K个元素,即是需要的K个最大数 ...

  2. 【算法】在N个乱序数字中查找第K大的数字

    目录 1. 结论 2. 经典的几种解法 2.1 解法一:O(n*k) 2.2 解法二:O(n*logk) 2.3 解法三:O(n) 2.4 解法四:O(n*logn+k) 2.5 解法五:O(n*lo ...

  3. 在N个数中查找第K大的数字(Top K问题)

    在N个乱序数字中查找第k大的数字,时间复杂度可以减小至 O(N*logN) O(N) O(1) O(2) 答案:B 所谓"第(前)k大数问题"指的是在长度为n(n>=k)的乱 ...

  4. 在N个乱序数字中查找第k大的数字

    在N个乱序数字中查找第k大的数字 在N个乱序数字中查找第k大的数字,时间复杂度可以减小至 O(N*logN) O(N) O(1) O(2) 答案:B 所谓"第(前)k大数问题"指的 ...

  5. 12 | 排序(下):如何用快排思想在O(n)内查找第K大元素?

    算法对比: 算法 时间复杂度 适合场景 冒泡排序.插入排序.选择排序 O(n2) 小规模数据 归并排序.快速排序 O(nlogn) 大规模数据 归并排序和快速排序都用到了分治思想,非常巧妙.我们可以借 ...

  6. 【算法】快速选择算法 ( 数组中找第 K 大元素 )

    算法 系列博客 [算法]刷题范围建议 和 代码规范 [算法]复杂度理论 ( 时间复杂度 ) [字符串]最长回文子串 ( 蛮力算法 ) [字符串]最长回文子串 ( 中心线枚举算法 ) [字符串]最长回文 ...

  7. 如何寻找无序数组中的第K大元素?

    如何寻找无序数组中的第K大元素? 有这样一个算法题:有一个无序数组,要求找出数组中的第K大元素.比如给定的无序数组如下所示: 如果k=6,也就是要寻找第6大的元素,很显然,数组中第一大元素是24,第二 ...

  8. 数组中的第K大元素问题(C++)

    数组中的第K大元素问题 问题: 在未排序的数组中找到第 k 个最大的元素.请注意,需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素. 约定: 假设这里数组的长度为 n. 方法一: ...

  9. 从C语言的角度重构数据结构系列(七)-数据结构堆知识求解数据流中的第K大元素

    前言 在这里给自己打个广告,需要的小伙伴请自行订阅. python快速学习实战应用系列课程 https://blog.csdn.net/wenyusuran/category_2239261.html ...

最新文章

  1. NVIDIA深度学习Tensor Core性能解析(下)
  2. Ubuntu 12.04下玩转终端管理器Byobu
  3. Python的输入指令、格式化输出、基本运算符
  4. 运行npm install命令的时候会发生什么?
  5. 函数自执行-一元运算符
  6. Linq 常用方法解释
  7. Spring 事务的那些坑,都在这里了!
  8. 安装conntrack-tools
  9. 2021最新Java零基础自学教程,java从入门到精通
  10. DSA数字签名含C语言实例
  11. 放大电路静态工作点的稳定
  12. js实现鼠标放在div 悬浮显示另一个div内容链接 (不占位置)
  13. 【毕业设计】 微信小程序购物商城系统 【含代码】
  14. “80后”国家杰青,任太原理工大学副校长!
  15. 习题2-2 阶梯电价
  16. 【Java】接口长URL转成短连接的实现(代码案例实操)
  17. 计算机首饰设计本科考试,珠宝首饰设计师考证条件及考试大纲.doc
  18. 怎样用计算机打出Abc,49.智能ABC输入秘籍四招:
  19. (11) 修改ueditor 插入代码时的样式
  20. ZMQ通信模型及基本服务实现

热门文章

  1. Ubantu安装搜狗输入法
  2. linux mint 卸载compiz,Linux Mint 11 开启 Compiz Fusion 特效
  3. 辽宁舰首次中期维护或历时半年 将更换大型部件
  4. php5.3教程,PHPwind 5.3 官方风格教程
  5. 计算机英语 答案,计算机英语模拟试题1参考答案
  6. Python办公自动化教程-1.1节-Excel基础概念
  7. Kerberos 域委派攻击之约束性委派
  8. OkHttp 官方文档
  9. 名画182 仇英《清明上河图》
  10. mysql修改游戏元宝数量_天龙诀数据库连接元宝修改方法