代码风格C++与Python简单对比

问题:合并两个有序链表

链接:https://leetcode-cn.com/problems/merge-two-sorted-lists/description/

C系风格:

 1 /**
 2  * Definition for singly-linked list.
 3  * struct ListNode {
 4  *     int val;
 5  *     ListNode *next;
 6  *     ListNode(int x) : val(x), next(NULL) {}
 7  * };
 8  11   12
 9  */
10 class Solution {
11 public:
12     ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
13         ListNode* head = l1;
14         if (l1 == NULL) return l2;
15         if (l2 == NULL) return l1;
16         
17         bool isEnd = false;
18         while (l2 != NULL&&isEnd==false)
19         {
20             ListNode* temp = new ListNode(l2->val);        
21             while (l1 != NULL)
22             {
23                 if (l1->next != NULL)
24                 {
25                     if (l2->val >= l1->val&&l2->val < l1->next->val)
26                     {
27                         temp->next = l1->next;
28                         l1->next = temp;
29                         break;
30                     }
31                     else if (l2->val > l1->val&&l2->val > l1->next->val)
32                     {
33                         l1 = l1->next;
34                         //break;
35                     }
36                     else if (l2->val == l1->next->val)
37                     {
38                         l1 = l1->next;
39                         //break;
40                     }
41                     else if (l2->val < l1->val)
42                     {
43                         temp->next = l1;
44                         l1 = temp;
45                         head = l1;
46                         break;
47                     }
48                 }
49                 else
50                 {
51                    if (l1->val == l2->val)
52                     {
53                         l1->next = l2;
54                         isEnd = true;
55                     }
56                     else if (l1->val<l2->val)
57                     {
58                         l1->next = l2;
59                         isEnd = true;
60                     }
61                     else if(l1->val>l2->val)
62                     {
63                         ListNode* node=new ListNode(l1->val);
64                         l1->val=l2->val;
65                         l1->next=node;
66                         //isEnd = true;
67                     }
68                     break;
69                 }
70             }
71             l2 = l2->next;
72         }
73         return head;
74     }
75 };

Python风格:

 1 # Definition for singly-linked list.
 2 # class ListNode(object):
 3 #     def __init__(self, x):
 4 #         self.val = x
 5 #         self.next = None
 6 
 7 class Solution(object):
 8     def mergeTwoLists(self, l1, l2):
 9         """
10         :type l1: ListNode
11         :type l2: ListNode
12         :rtype: ListNode
13         """
14         head = l1
15         if l1 is None:
16             return l2
17         if l2 is None:
18             return l1
19         
20         isEnd = False;
21         while l2 != None and isEnd == False:
22             temp = ListNode(l2.val)
23             while l1 != None:
24                 if l1.next != None:
25                     print l1
26                     if l2.val >= l1.val and l2.val < l1.next.val:                   
27                         temp.next=l1.next
28                         l1.next=temp
29                         break
30                     elif l2.val>l1.val and l2.val>l1.next.val:
31                         l1=l1.next
32                     elif l2.val == l1.next.val:
33                         l1=l1.next
34                     elif l2.val <l1.val:
35                         temp.next=l1
36                         l1=temp
37                         head=l1
38                         break
39                 else:
40                     if l1.val == l2.val:
41                         l1.next=l2
42                         isEnd=True
43                     elif l1.val<l2.val:
44                         l1.next=l2
45                         isEnd=True
46                     elif l1.val>l2.val:
47                         node=ListNode(l1.val)
48                         l1.val=l2.val
49                         l1.next=node
50                     break
51             l2=l2.next
52         return head
53         

猜你喜欢

转载自www.cnblogs.com/nxzwcx/p/9420716.html
今日推荐