国内最全IT社区平台 联系我们 | 收藏本站
华晨云阿里云优惠2
您当前位置:首页 > php开源 > 综合技术 > leetcode 203 Remove Linked List Elements

leetcode 203 Remove Linked List Elements

来源:程序员人生   发布时间:2015-06-09 08:34:17 阅读次数:3202次


Remove all elements from a linked list of integers that have valueval.

Example
Given: 1 --> 2 --> 6 --> 3 --> 4 --> 5 --> 6, val = 6
Return: 1 --> 2 --> 3 --> 4 --> 5



我的解法:




// Linklist.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include<iostream> using namespace std; struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {} }; ListNode* removeElements(ListNode* head, int val) { if(head == NULL)return head; ListNode* pre = NULL; ListNode* root = head; ListNode* current = head; while(current!=NULL) { if(current->val == val) { if(pre==NULL) { current = current->next; root = current; } else { pre->next = current->next; current = current->next; } } else { pre = current; current =current->next; } } return root; } int _tmain(int argc, _TCHAR* argv[]) { ListNode* temp = new ListNode(2); ListNode* temp_next = new ListNode(1); temp->next = temp_next; removeElements(temp,1); return 0; }


python的解法:


class Solution: # @param {ListNode} head # @param {integer} val # @return {ListNode} def removeElements(self, head, val): dummy = ListNode(⑴) dummy.next = head prev = dummy while head: if head.val == val: prev.next = head.next head = prev prev = head head = head.next return dummy.next



1个非常简洁的解法:


struct ListNode* removeElements(struct ListNode* head, int val) { if (head&&head->val==val)head=removeElements(head->next, val); if (head&&head->next)head->next=removeElements(head->next, val); return head; }



生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠
程序员人生
------分隔线----------------------------
分享到:
------分隔线----------------------------
关闭
程序员人生