日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

LeedCode刷题

發布時間:2025/3/15 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LeedCode刷题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

一、最接近三數之和

1、題目描述

2、題解

3、源碼

二、電話號碼的字母組合

1、題目描述

2、題解

3、源碼

三、四數之和

1、題目描述

2、題解

3、源碼

四、刪除鏈表的倒數第N個結點

1、題目描述

2、題解

3、源碼?

五、有效括號

1、題目描述

2、題解

3、源碼


一、最接近三數之和

1、題目描述

?

2、題解

3、源碼

class Solution:def threeSumClosest(self, nums: List[int], target: int) -> int:best = 10**7n = len(nums)nums.sort()for i in range(n):if i > 0 and nums[i] == nums[i - 1]:continueL = i + 1R = n - 1while L < R:s = nums[i] + nums[L] + nums[R]if s == target:return targetif abs(s - target) < abs(best - target):best = sif s > target:R -= 1while L < R and nums[R] == nums [R + 1]:R -=1else:L +=1while L < R and nums[L] == nums[L - 1]:L +=1return best

二、電話號碼的字母組合

1、題目描述

?

2、題解

?

3、源碼

class Solution:def letterCombinations(self, digits: str) -> List[str]:if digits == '':return []phoneMap = {"2": "abc","3": "def","4": "ghi","5": "jkl","6": "mno","7": "pqrs","8": "tuv","9": "wxyz",}res = ['']for num in digits:chars = phoneMap[num]new_res = []for r in res:for char in chars:new_res.append(r+char)res = new_resreturn res

三、四數之和

1、題目描述

?

2、題解

3、源碼

class Solution:def fourSum(self, nums: List[int], target: int) -> List[List[int]]:quadruplets = list()if not nums or len(nums) < 4:return quadrupletsnums.sort()length = len(nums)for i in range(length - 3):if i > 0 and nums[i] == nums[i - 1]:#排序之后的去重continueif nums[i] + nums[i + 1] + nums[i + 2] + nums[i + 3] > target:#判斷最小的和跟目標值的關系breakif nums[i] + nums[length - 3] + nums[length - 2] + nums[length - 1] < target:continue#用最小的與最大的三數和,一次減少循環for j in range(i + 1, length - 2):#最右邊為有指針的位置if j > i + 1 and nums[j] == nums[j - 1]:#去重continueif nums[i] + nums[j] + nums[j + 1] + nums[j + 2] > target:break#同樣是最小的和與目標值比較if nums[i] + nums[j] + nums[length - 2] + nums[length - 1] < target:continueleft, right = j + 1, length - 1while left < right:total = nums[i] + nums[j] + nums[left] + nums[right]if total == target:quadruplets.append([nums[i], nums[j], nums[left], nums[right]])while left < right and nums[left] == nums[left + 1]:left += 1left += 1while left < right and nums[right] == nums[right - 1]:right -= 1right -= 1elif total < target:left += 1else:right -= 1return quadruplets

四、刪除鏈表的倒數第N個結點

1、題目描述

?

2、題解

3、源碼?

# Definition for singly-linked list. # class ListNode: # def __init__(self, val=0, next=None): # self.val = val # self.next = next class Solution:def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode:def getLength(head: ListNode) -> int:length = 0while head:length += 1head = head.nextreturn lengthdummy = ListNode(0, head)length = getLength(head)cur = dummyfor i in range(1, length - n + 1):cur = cur.nextcur.next = cur.next.nextreturn dummy.next

五、有效括號

1、題目描述

?

2、題解

?

3、源碼

class Solution { public:bool isValid(string s) {stack<int> st;for (int i = 0; i < s.size(); i++) {if (s[i] == '(') st.push(')');else if (s[i] == '{') st.push('}');else if (s[i] == '[') st.push(']');// 第三種情況:遍歷字符串匹配的過程中,棧已經為空了,沒有匹配的字符了,說明右括號沒有找到對應的左括號 return false// 第二種情況:遍歷字符串匹配的過程中,發現棧里沒有我們要匹配的字符。所以return falseelse if (st.empty() || st.top() != s[i]) return false;else st.pop(); // st.top() 與 s[i]相等,棧彈出元素}// 第一種情況:此時我們已經遍歷完了字符串,但是棧不為空,說明有相應的左括號沒有右括號來匹配,所以return false,否則就return truereturn st.empty();} };

總結

以上是生活随笔為你收集整理的LeedCode刷题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。