T86、分隔链表

给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。
你应当保留两个分区中每个节点的初始相对位置。
示例:
输入: head = 1->4->3->2->5->2, x = 3
输出: 1->2->2->4->3->5

遍历一次链表,然后使用2个数组分别保存下小于target和大于等于target的值,最后在遍历一次链表修改链表中的值。

public static ListNode partition(ListNode head, int x) {
        ListNode res=head,temp = head;
        int len = 0;
        int s[] = new int[1000];
        int b[] = new int[1000];
        Arrays.fill(s, -147258369);
        Arrays.fill(b, -147258369);
        int idx_s = 0,idx_b =0;
        while(temp!=null) {
            if(temp.val<x) {
                s[idx_s]=temp.val;
                idx_s++;
            }else {
                b[idx_b]=temp.val;
                idx_b++;
            }
            temp = temp.next;       
        }
        idx_s = 0;idx_b =0;
        while(s[idx_s]!=-147258369) {
            head.val = s[idx_s];
            idx_s++;
            head=head.next;
        }
        
        while(b[idx_b]!=-147258369) {
            head.val = b[idx_b];
            idx_b++;
            head=head.next;
        }
        return res;
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • LeetCode-链表 链表(Linked List)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺...
    raincoffee阅读 1,268评论 0 6
  • 1. 找出数组中重复的数字 题目:在一个长度为n的数组里的所有数字都在0到n-1的范围内。数组中某些数字是重复的,...
    BookThief阅读 1,824评论 0 2
  • 动态规划 111. 爬楼梯思路类似斐波那契数列注意考虑第 0 阶的特殊情况 272. 爬楼梯 II思路类似上题,只...
    6默默Welsh阅读 2,461评论 0 1
  • 什么是数组? 数组简单来说就是将所有的数据排成一排存放在系统分配的一个内存块上,通过使用特定元素的索引作为数组的下...
    启明_b56f阅读 960评论 0 0
  • 搞懂单链表常见面试题 Hello 继上次的 搞懂基本排序算法,这个一星期,我总结了,我所学习和思考的单链表基础知识...
    醒着的码者阅读 4,618评论 1 45