求两道数据结构相关笔试题答案

大招至胜 2012-01-16 03:09:34
1. 有一个数组,如int a[N],值M是数组当中的一值。在不分配内存空间的情况下,实现排序,使其以M为分界,前面小于等于M,后面大于等于M。
2. 有一单链表,每个节点信息存储的是一个字符,其中有冗余的字符,请以最少的时候复杂度去除冗余的字符,使其只保留一份。只能遍历一次。


我数据结构差,望算法高手指点,我一道都做不出来
...全文
113 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
AnYidan 2012-01-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 gqjjqg 的回复:]

1.先找到M再做位置交换。
2.可以做个字符表,遍历一次,查表里有木有记录,然后判断是否要删掉这个节点。
[/Quote]

++
jialejiahi 2012-01-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 mingchaoyan 的回复:]

第一问,lz知道快排吗,快排的一趟排序干的就是这个活;
第二问,若没要求空间复杂度,设个数组做hash映射,时间复杂度可以在O(n)
[/Quote]
正解。
chenliao18 2012-01-16
  • 打赏
  • 举报
回复
第一题就是个排序问题,M应该不用考虑吧....不分配内存的话,重点应该在数值交换上,估计要用异或交换
面包大师 2012-01-16
  • 打赏
  • 举报
回复
第一问,与快速排序类似
peng_weida 2012-01-16
  • 打赏
  • 举报
回复
晕,题目说了排序 ,。。。。。。
peng_weida 2012-01-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 mingchaoyan 的回复:]
第一问,lz知道快排吗,快排的一趟排序干的就是这个活;
[/Quote]
没说小于M或大于M的值要排序啊,只是说分割
鲲尘千古 2012-01-16
  • 打赏
  • 举报
回复
第一个我不太清楚阿,如果把无序数组排序之后,那么其中任何的一个值都可以成为M,那么以不以M为分界,就没有任何的意义阿。
mingchaoyan 2012-01-16
  • 打赏
  • 举报
回复
第一问,lz知道快排吗,快排的一趟排序干的就是这个活;
第二问,若没要求空间复杂度,设个数组做hash映射,时间复杂度可以在O(n)
gqjjqg 2012-01-16
  • 打赏
  • 举报
回复
1.先找到M再做位置交换。
2.可以做个字符表,遍历一次,查表里有木有记录,然后判断是否要删掉这个节点。

69,381

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧