目录
这里有一个 PHP 的知识点,PHP5以上的对象的赋值是类似于 “引用赋值” 的概念,修改一个对象内容时,另一个对象的内容也会跟着改变,而修改变量本身,是不会影响另一个对象的,说的不太清楚,可以参考下面的链接。
中文链接: 对象赋值在PHP中到底是不是引用? - 云+社区 - 腾讯云之前的文章中,我们说过变量赋值的问题,其中有一个问题是对象在进行变量赋值的时候,直接就是引用赋值。那么到底真实情况是怎样呢?https://cloud.tencent.com/developer/article/1557520英文链接: (链接定位到的内容为 User Contributed Notes )PHP: 基本概念 - Manual
https://www.php.net/manual/zh/language.oop5.basic.php#79856
方法: 双指针(PHP)
/**
* Definition for a singly-linked list.
* class ListNode {
* public $val = 0;
* public $next = null;
* function __construct($val = 0, $next = null) {
* $this->val = $val;
* $this->next = $next;
* }
* }
*/
class Solution {
/**
* @param ListNode $head
* @param Integer $n
* @return ListNode
*/
function removeNthFromEnd($head, $n) {
$temp = new ListNode(0, $head);
$first = $head;
$second = $temp;
for ($i = 0; $i < $n; $i++) {
$first = $first->next;
}
while ($first != null) {
$first = $first->next;
$second = $second->next;
}
$second->next = $second->next->next;
return $temp->next;
}
}
解释: 代码的一开始就在原对象 $head 的头结点再添加了一个头结点,形成 $temp 对象。之后将 $temp 对象“引用赋值”给 $second 对象,这时,他们拥有相同的句柄,意味着修改其中一个对象的成员变量,另一个对象的成员变量也会随之修改。但这并不同于 引用赋值,请注意。
测试结果:
执行用时:8 ms, 在所有 PHP 提交中击败了39.81%的用户
内存消耗:15.3 MB, 在所有 PHP 提交中击败了20.83%的用户
通过测试用例:208 / 208
官方链接:
力扣https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/