题目:输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
示例:
输入:head = [1,3,2]
输出:[2,3,1]
限制:
0 <= 链表长度 <= 10000
思路
PHP中自定义单链表:
class ListNode {
public $val = 0;
public $next = null;
function __construct($val) { $this->val = $val; }
}
用链表实现示例中的输入:
$list = new ListNode(1);
$list2 = new ListNode(3);
$list3 = new ListNode(2);
$list->next = $list2;
$list2->next = $list3;
return $list;
打印链表list:
App\Http\Controllers\ListNode Object
(
[val] => 1
[next] => App\Http\Controllers\ListNode Object
(
[val] => 3
[next] => App\Http\Controllers\ListNode Object
(
[val] => 2
[next] =>
)
)
)
其结构可以看做俄罗斯套娃。
弄清楚链表结构答案就清晰多了,因结果要求数组形式,所以直接按照数组处理即可:
/**
* Definition for a singly-linked list.
* class ListNode {
* public $val = 0;
* public $next = null;
* function __construct($val) { $this->val = $val; }
* }
*/
class Solution {
/**
* @param ListNode $head
* @return Integer[]
*/
function reversePrint($head) {
$arr = array();
$i = 0;
while ($head) {
$arr[$i] = $head->val;
$i ++;
$head = $head->next;
}
$resArr = array_reverse($arr);
return $resArr;
}
}
提交通过。
执行用时:16 ms
内存消耗:17.5 MB