一亩三分地论坛

 找回密码
 获取更多干货,去instant注册!

扫码关注一亩三分地公众号
查看: 1047|回复: 13
收起左侧

[CareerCup] 链表去重,我自己写的极简版,有点小问题

[复制链接] |试试Instant~ |关注本帖
TonyJang 发表于 2014-9-21 20:47:13 | 显示全部楼层 |阅读模式

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?获取更多干货,去instant注册!

x
本帖最后由 TonyJang 于 2014-9-21 21:20 编辑
  1. package chapter2;

  2. import java.util.*;
  3. public class removeDup{
  4. public static LinkedList<Integer> removeDup(LinkedList<Integer> list){

  5. HashSet<Integer> set=new HashSet<Integer>();
  6. ListIterator<Integer> it= list.listIterator();


  7. while(it.hasNext()){
  8.         if(set.contains(it.next())){
  9.                
  10.                 it.remove();
  11.         }else{
  12.                
  13.                 set.add(it.previous());
  14.                 it.next();
  15.                
  16.         }
  17.         
  18.         
  19. }
  20. return list;        
  21. }





  22. public static void main(String[] args){
  23.         
  24.         LinkedList<Integer> list=new LinkedList<Integer>();
  25.         
  26.         list.add(2);
  27.         list.add(7);
  28.         list.add(3);
  29.         list.add(8);
  30.         list.add(1);
  31.         list.add(2);
  32.         list.add(3);
  33.         
  34.         System.out.println(removeDup(list).toString());
  35.         
  36.         
  37. }

  38. }
复制代码
我想用java自带的Linkedlist类,这样简洁一些,但是运行有错误,很简单的一个问题都错了,还不知道错在哪儿,太打击人了。。。

另外再问一下,大家平时写链表的题目用java自带的linkedlist类吗?我看地里很多大牛都是Node->LinkedList自己构造的

hakase 发表于 2014-9-21 23:23:01 | 显示全部楼层
本帖最后由 hakase 于 2014-9-21 23:32 编辑

如果用java自带的数据结构整个程序就三句话:
Set<Integer> aSet = new HashSet<Integer>(list);
list.clear();
list.addAll(aSet);
我要是面试官直接要求结束面试。
人家是考你算法。
对于这道题明显是考数据结构中的基本操作。用Java自带的数据结构就不合适了。
另外,错的地方是使用iterator进行遍历的时候不能对这个list进行删除、添加操作。

评分

3

查看全部评分

回复 支持 1 反对 0

使用道具 举报

billyli8866 发表于 2014-9-21 21:52:19 | 显示全部楼层
不要用自带的数据结构。。。
回复 支持 反对

使用道具 举报

 楼主| TonyJang 发表于 2014-9-21 22:21:21 | 显示全部楼层
billyli8866 发表于 2014-9-21 21:52
不要用自带的数据结构。。。

为啥啊?自己写不麻烦吗?
回复 支持 反对

使用道具 举报

 楼主| TonyJang 发表于 2014-9-22 08:48:01 | 显示全部楼层
hakase 发表于 2014-9-21 23:23
如果用java自带的数据结构整个程序就三句话:
Set aSet = new HashSet(list);
list.clear();

大牛说的是啊!本菜转行初期,只觉得这样方便点,另外工作中这样可以吧?
回复 支持 反对

使用道具 举报

 楼主| TonyJang 发表于 2014-9-22 08:53:06 | 显示全部楼层
hakase 发表于 2014-9-21 23:23
如果用java自带的数据结构整个程序就三句话:
Set aSet = new HashSet(list);
list.clear();

不过,使用iterator进行遍历的时候不能对这个list进行删除、添加操作是可以的吧,我看了API没发现有啥问题啊http://tool.oschina.net/apidocs/apidoc?api=jdk_7u4
回复 支持 反对

使用道具 举报

tbu 发表于 2014-9-22 09:58:30 | 显示全部楼层
本地运行你的代码没错,但如果你说的是leetcode上报错的话那肯定了啊,
因为leetcode给的都是自己写的ListNode类,是没有iterator的。。。。而且参数类型肯定也incomparable。。。。
回复 支持 反对

使用道具 举报

hakase 发表于 2014-9-22 21:58:18 | 显示全部楼层
本帖最后由 hakase 于 2014-9-22 22:06 编辑
TonyJang 发表于 2014-9-22 08:53
不过,使用iterator进行遍历的时候不能对这个list进行删除、添加操作是可以的吧,我看了API没发现有啥问 ...

你说得对,是我错了。卖个萌遮羞脸根据Java Secure Coding 有这么一条:https://www.securecoding.cert.or ... tion+is+in+progress
据说遍历器没有结束遍历之前修改collection里面的内容会造成一些“未定义”的行为。
回复 支持 反对

使用道具 举报

sqzhang17 发表于 2014-9-23 06:29:39 | 显示全部楼层
一般来说在面试的时候要是考linkedlist的题~一般默认的都是single linked list~这样会让面试官更容易的了解你对linked list 的了解~
当然~问一下也没有问题~

回复 支持 反对

使用道具 举报

 楼主| TonyJang 发表于 2014-9-23 09:45:38 | 显示全部楼层
sqzhang17 发表于 2014-9-23 06:29
一般来说在面试的时候要是考linkedlist的题~一般默认的都是single linked list~这样会让面试官更容易的了解 ...

不过还是要自己写Node.java,不能用java.util.*
回复 支持 反对

使用道具 举报

sqzhang17 发表于 2014-9-24 03:35:39 | 显示全部楼层
TonyJang 发表于 2014-9-23 09:45
不过还是要自己写Node.java,不能用java.util.*

对的~对的~应该是要自己写一个node class~
回复 支持 反对

使用道具 举报

 楼主| TonyJang 发表于 2014-9-24 07:54:01 | 显示全部楼层
sqzhang17 发表于 2014-9-24 03:35
对的~对的~应该是要自己写一个node class~

Need to do this in any situation?
回复 支持 反对

使用道具 举报

sqzhang17 发表于 2014-9-24 13:22:55 | 显示全部楼层
几乎所有面试吧~面试大部分不是考你对java已有的linkedlist的理解~而是用过自己构造的listnode来表现你对算法的理解~
回复 支持 反对

使用道具 举报

rubyfrea 发表于 2014-9-24 14:23:21 | 显示全部楼层
还是不太理解 为什么不能用自带的算法呢
回复 支持 反对

使用道具 举报

本版积分规则

请点这里访问我们的新网站:一亩三分地Instant.

Instant搜索更强大,不扣积分,内容组织的更好更整洁!目前仍在beta版本,努力完善中!反馈请点这里

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明 ( 沪ICP备11015994号 )

custom counter

GMT+8, 2016-12-6 03:05

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

快速回复 返回顶部 返回列表