026-刪除排序陣列中的重複項
033-搜尋旋轉排序陣列
題目描述
**(python)
class
listnode
:def
__init__
(self, x)
: self.val = x
self.
next
=none
class
solution
:def
mergeklists
(self, lists: list[listnode])-
> listnode:
length =
len(lists)
# 邊界情況
if length ==0:
return
none
if length ==1:
return lists[0]
# 分治
mid = length //
2return self.merge(self.mergeklists(lists[
:mid]
), self.mergeklists(lists[mid:length]))
defmerge
(self, node_a, node_b)
: dummy = listnode(
none
) cursor_a, cursor_b, cursor_res = node_a, node_b, dummy
while cursor_a and cursor_b:
# 對兩個節點的 val 進行判斷,直到一方的 next 為空
if cursor_a.val <= cursor_b.val:
cursor_res.
next
= listnode(cursor_a.val)
cursor_a = cursor_a.
next
else
: cursor_res.
next
= listnode(cursor_b.val)
cursor_b = cursor_b.
next
cursor_res = cursor_res.
next
# 有一方的next的為空,就沒有比較的必要了,直接把不空的一邊加入到結果的 next 上
if cursor_a:
cursor_res.
next
= cursor_a
if cursor_b:
cursor_res.
next
= cursor_b
return dummy.
next
題目描述
**(python)
class
solution
:def
removeduplicates
(self, nums: list[
int])-
>
int:
a =0 b =
1while b <
len(nums)
:if nums[a]
== nums[b]
: nums.pop(a)
else
: a +=
1 b +=
1return
len(nums)
題目描述
**(python)
class
solution
:def
search
(self, nums: list[
int]
, target:
int)
->
int:
ifnot nums:
return-1
l, r =0,
len(nums)-1
while l <= r:
mid =
(l + r)//2
if nums[mid]
== target:
return mid
if nums[l]
<= nums[mid]
:if nums[l]
<= target < nums[mid]
: r = mid -
1else
: l = mid +
1else
:if nums[mid]
< target <= nums[
len(nums)-1
]:l = mid +
1else
: r = mid -
1return
-1
LeetCode演算法打卡
475.供暖器 冬季已經來臨。你的任務是設計乙個有固定加熱半徑的供暖器向所有房屋供暖。現在,給出位於一條水平線上的房屋和供暖器的位置,找到可以覆蓋所有房屋的最小加熱半徑。所以,你的輸入將會是房屋和供暖器的位置。你將輸出供暖器的最小加熱半徑。說明 給出的房屋和供暖器的數目是非負數且不會超過 25000...
leetcode打卡系列 1
這道題是leetcode的第三題,也是比較經典的一道。題目說讓找到任意乙個字串的無重複字元的子串。如 abcabcbb 的無重複字元的最長子串是 abc 所以輸出長為3。解題的常規思路有以下兩種 一 暴力列舉 對給定字串進行列舉,找到原始字串的所有子字串 兩層for迴圈即可 接著對所有的字串進行判斷...
leetcode打卡系列 3
給定長度為 n 的整數陣列 nums,其中 n 1,返回輸出陣列 output 其中 output i 等於 nums 中除 nums i 之外其餘各元素的乘積。示例 輸入 1,2,3,4 輸出 24,12,8,6 def func nums left right output left value...