Leecode每日一題 540 21

2021-10-06 02:17:09 字數 1851 閱讀 5496

今天這題用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

將兩個公升序鍊錶合併為乙個新的公升序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。

示例:輸入: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

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

真的是菜鳥用迭代,高玩用遞迴= = ,遞迴**看懂都太費勁了- - ,經典一看就會,一寫就廢。

**還是要多練習,一萬行標準~

Leecode每日一題 猜字謎

字謎的迷面 puzzle 按字串形式給出,如果乙個單詞 word 符合下面兩個條件,那麼它就可以算作謎底 例如,如果字謎的謎面是 abcdefg 那麼可以作為謎底的單詞有 faced cabbage 和 baggage 而 beefed 不含字母 a 以及 based 其中的 s 沒有出現在謎面中 ...

Leecode每日一題 單調數列

如果陣列是單調遞增或單調遞減的,那麼它是單調的。如果對於所有 i j,a i a j 那麼陣列 a 是單調遞增的。如果對於所有 i j,a i a j 那麼陣列 a 是單調遞減的。當給定的陣列 a 是單調陣列時返回 true,否則返回 false。示例 1 輸入 1,2,2,3 輸出 true 示例...

Leecode每日一題之561陣列拆分

取兩個數之差的絕對值最小。可以先排序然後挑選奇數字置的數字相加即可 我一開始用c語言做的,使用了氣泡排序 選擇排序等。但是都是超出時間限制了。所以改用c 因為裡面有內嵌函式sort,直接一步到胃。1 sort函式可以三個引數也可以兩個引數,必須的標頭檔案 include algorithm 和usi...