import java.util.*; /* * public class ListNode { * int val; * ListNode next = null; * public ListNode(int val) { * this.val = val; * } * } */ public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @return ListNode类 */ public ListNode sortCowsIV (ListNode head) { int number = 0; ListNode temp = head; while (temp != null) { if (temp.val == 0) { number++; } temp = temp.next; } ListNode cur = head; while (cur != null) { if (number-- > 0) { cur.val = 0; } else { cur.val = 1; } cur = cur.next; } return head; } }
本题知识点分析:
1.链表遍历
2.链表赋值
3.数学模拟
4.虚拟头节点
本题解题思路分析:
1.先遍历一次链表记录0的数量
2.然后再遍历一次链表,先把0的数量赋值完,然后再赋值为1即可
3.最后返回没有被修改的节点head
本题使用编程语言: Java
如果您觉得本篇文章对您有帮助的话,可以点个赞支持一下,感谢~