540
今天这题用python3做,实在太简单了,可能用更底层的语言会复杂一些,并附上昨天打卡忘记mark的21题
给定一个只包含整数的有序数组,每个元素都会出现两次,唯有一个数只会出现一次,找出这个数。
示例 1:
输入: [1,1,2,3,3,4,4,8,8]
输出: 2
示例 2:
输入: [3,3,7,7,10,11,11]
输出: 10
Python代码
class Solution:
def singleNonDuplicate(self, nums):
for i in range(len(nums)):
a=nums.count(nums[i])
if a == 1:
return nums[i]
break
21
将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
Python代码
注意思路是用迭代器对比数值,代码还是带复杂,太young了
class Solution1:
def mergeOnelist(self,list1):
iter1=iter(list1)
return next(iter1)
class Solution2:
def mergeTwolist(self,list2):
iter2=iter(list2)
return next(iter2)
list1=[1,2,4]
list2=[1,3,4]
iter1=iter(list1)
iter2=iter(list2)
S1=Solution1()
S2=Solution2()
length = 2*len(list1)-2
a=next(iter1)
b=next(iter2)
try:
for i in range(length):
if a < b:
print(a,end='')
a=next(iter1)
elif a>b:
print(b,end='')
b=next(iter2)
else:
print(a,end='')
print(b,end='')
a=next(iter1)
b=next(iter2)
except StopIteration:
1+1
leecode大神做法(递归):
作者:z1m
链接:https://leetcode-cn.com/problems/merge-two-sorted-lists/solution/yi-kan-jiu-hui-yi-xie-jiu-fei-xiang-jie-di-gui-by-/
class Solution:
def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:
if not l1: return l2 # 终止条件,直到两个链表都空
if not l2: return l1
if l1.val <= l2.val: # 递归调用
l1.next = self.mergeTwoLists(l1.next,l2)
return l1
else:
l2.next = self.mergeTwoLists(l1,l2.next)
return l2
总结
真的是菜鸟用迭代,高玩用递归= = ,递归代码看懂都太费劲了- - ,经典一看就会,一写就废。
代码还是要多练习,一万行标准~