123
返回列表 发新帖
楼主: Fanyare
跳转到指定楼层
上一主题 下一主题
收起左侧

[CareerCup] [第二轮] 2/25-3/3 CareerCup 2.4

全局:
https://github.com/1094401996/Ca ... /PartitionList.java

* 运用了快排的partition思想,方法在链表类这中提供。。。。
回复

使用道具 举报

🔗
myprincessss 2014-4-9 22:05:38 | 只看该作者
全局:
不用新建链表,直接在原链表上操作:把<x的node移到List的最前面。O(n) time, O(1) space

        public static ListNode partition(ListNode head, int x) {
                ListNode node = head;
                while (node != null) {
                        if (node.getValue() < x) {
                                head = appendToHead(head, node.getValue());
                                removeNode(node);
                        } else {
                                node = node.getNext();
                        }
                }
                return head;
        }

        public static ListNode appendToHead(ListNode head, int value) {
                ListNode addNode = new ListNode(value);
                addNode.setNext(head);
                head = addNode;
                return head;
        }

        public static void removeNode(ListNode node) {
                node.setValue(node.getNext().getValue());
                node.setNext(node.getNext().getNext());
        }
回复

使用道具 举报

🔗
sanguine 2014-12-28 01:27:25 | 只看该作者
全局:
grassgigi 发表于 2013-2-26 13:50
我打错了.那个方法是partition,不是pivot,应该就在算法导论quicksort刚开始的地方。。

我的代码有点 ...

那如果LinkedList里面有两个数和当前函数给的参数一样怎么处理呢?

我已开始也想到的是用QuickSort里面的partition,但是发现好像碰到参数和value一样的情况就会有问题
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

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