java - 以有效的方式从排序的链表中删除重复项
问题描述
我在 HackerRank 上,我需要从排序的链接列表中删除重复的项目。我通过了所有案例,除了其中两个输入类似于:10001102034 所以我的程序需要几秒钟才能完成并超过时间。如何更有效地编写代码,我听说过使用平方根,但我不知道如何使用它。任何指南都值得赞赏。这是我的代码。
private static Node removeDuplicates(Node head) {
/* Another reference to head */
Node current = head;
Node next;
/* Traverse list till the last node */
while (current != null && current.next != null) {
if (current.data == current.next.data) {
next = current.next.next;
if (next == null) {
current.next = null;
break;
}
current.next = next;
} else {
current = current.next;
}
}
return head;
}
再次。它有效,但数字较长时需要太多时间。
解决方案
您应该if (current.data == current.next.data)
用while
循环替换条件并使用break 'label'
:
out:
while (current != null && current.next != null) {
while (current.data == current.next.data) {
next = current.next.next;
if (next == null) {
current.next = null;
break out;
}
current.next = next;
}
current = current.next;
}
推荐阅读
- amazon-web-services - AWS 中有调度服务吗?
- c# - 正确读取ms access数据库中的列数据类型
- sql - Oracle LEAD - 返回下一个匹配的列值
- symfony - Symfony 2.8 > 3.4.22 - 您的需求无法解析为一组可安装的软件包
- sql-server - 使用 MIN() 而不是 top 1 进行 SQL 查询
- google-maps - 当我包含谷歌地图时,我的构建失败
- python - 如何将直方图的y轴值乘以Python中的固定数字
- wordpress - 登录页面上的 Wordpress 网站菜单可见性
- php - 安装失败:目标文件夹已存在
- python - 将用户配置文件添加到 request.user