[问题] 针对pointer设pointer变量

楼主: s860418 (水肃)   2018-06-08 11:05:27
开发平台(Platform): (Ex: Win10, Linux, ...)
Unix
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
GCC-6.2.0
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
No
问题(Question):
小弟最近在leetcode上练功
自己有写出答案,但是跑得不够快,看一下其他高手写的
我看到一段程式码,他是这样写
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* deleteDuplicates(ListNode* head) {
if (head == NULL || head -> next == NULL){
return head;
}
*[1;33ListNode* current = head;*[m
while (current -> next != NULL){
if (current -> val == current -> next -> val){
current -> next = current -> next -> next;
}
else{
current = current -> next;
}
}
*[1;33return head;*[m
}
};
看一下标色的字,这边新设一个pointer变量current,assign head进来
但是return是return head
想请问一下,是不是这种设法,就是会让current的值和head连动?
这种编法术语是什么呢?
他的好处在哪里呢?谢谢
喂入的资料(Input):
Input: 1->1->2
预期的正确结果(Expected Output):
Output: 1->2
错误结果(Wrong Output):

程式码(Code):(请善用置底文网页, 记得排版,禁止使用图档)
如上
补充说明(Supplement):
leetcode 83题
作者: jerryh001   2018-06-08 11:43:00
两个无关 这样的好处... 楼下说他知道 XD
作者: MOONRAKER (㊣牛鹤鳗毛人)   2018-06-08 11:48:00
我只知道你颜色跑掉了 esc要用Ctrl-U输入(对吗?)
作者: cutekid (可爱小孩子)   2018-06-08 11:57:00
没有连动唷,将重复值的link拔掉后,回传 list 的开头
作者: elements (Helianthus annuns)   2018-06-08 16:29:00
这题目看起来很简单 你写不够快应该是因为你的算法复杂度太高 然后这不是什么特殊技巧 就只是用另一个指标去操作 list
作者: kaneson (Lance)   2018-06-08 17:44:00
return的问题在于传head进去, 操作head以外的东西时没什么问题,而如果改到head的话就需要一个固定管道传出来,方法有return head, 传参数用指标的指标或pass by reference等, 一般list操作最make sense的是return head, 在其他做法或应用时不得已(return不够用之类的)再考虑其他做法

Links booklink

Contact Us: admin [ a t ] ucptt.com