import java.util.*; /* * public class ListNode { * int val; * ListNode next = null; * public ListNode(int val) { * this.val = val; * } * } */ public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @param x int整型 * @return ListNode类 */ public ListNode cow_partition (ListNode head, int x) { // write code here LinkedList<Integer> linkedList = new LinkedList<>(); while (head != null) { linkedList.add(head.val); head = head.next; } LinkedList<Integer> result1 = new LinkedList<>(); LinkedList<Integer> result2 = new LinkedList<>(); for(int i=0;i<linkedList.size();i++){ if(linkedList.get(i)<x){ result1.addLast(linkedList.get(i)); }else{ result2.addLast(linkedList.get(i)); } } ListNode node = new ListNode(0); ListNode result = node; for (Integer integer : result1) { node.next = new ListNode(integer); node = node.next; } for (Integer integer : result2) { node.next = new ListNode(integer); node = node.next; } return result.next; } }
本题考察的知识点是链表,所用编程语言是java。
我首先使用LinkedList将链表的值按顺序存储起来,然后再遍历整个Linkedlist,遍历过程中将小于x的值放在一个新的linkedlist中,其余的值放在另外一个linkedlist当中,最后按小于x的值,再大于等于x的值重建链表。