摘要:給定一個(gè)大小為的數(shù)組,找到其中的眾數(shù)。第五題合并兩個(gè)有序數(shù)組難度簡單給定兩個(gè)有序整數(shù)數(shù)組和,將合并到中,使得成為一個(gè)有序數(shù)組。說明初始化和的元素?cái)?shù)量分別為和。第六題二叉樹的最大深度難度簡單給定一個(gè)二叉樹,找出其最大深度。
寫在前面的話
做做做題,慢慢上手了就覺得刷題速度變快了,果然還是有點(diǎn)笨~
希望最后一竅快點(diǎn)通吧~
169. 求眾數(shù)
難度:簡單
給定一個(gè)大小為 n 的數(shù)組,找到其中的眾數(shù)。眾數(shù)是指在數(shù)組中出現(xiàn)次數(shù)大于? n/2 ?的元素。
你可以假設(shè)數(shù)組是非空的,并且給定的數(shù)組總是存在眾數(shù)。給定一個(gè)大小為 n 的數(shù)組,找到其中的眾數(shù)。眾數(shù)是指在數(shù)組中出現(xiàn)次數(shù)大于? n/2 ?的元素。
你可以假設(shè)數(shù)組是非空的,并且給定的數(shù)組總是存在眾數(shù)。
我的題解:
class Solution(object): def majorityElement(self, nums): """ :type nums: List[int] :rtype: int """ value = nums[0] count = 0 for i in nums: if value == i: count = count + 1 else: if count == 0: value = i count = 1 continue count =count - 1 return value
我的思路:
這題參考了評論的題解,做了兩次,明白了來龍去脈。
中心思想就是:按順序遍歷數(shù)字,存在不同的數(shù)字就抵消相應(yīng)的count,存在相同數(shù)字則增加,最后總能獲取到唯一一個(gè)不會被抵消全部的數(shù)字,就是眾數(shù)了。
136. 只出現(xiàn)一次的數(shù)字
難度:簡單
給定一個(gè)非空整數(shù)數(shù)組,除了某個(gè)元素只出現(xiàn)一次以外,其余每個(gè)元素均出現(xiàn)兩次。找出那個(gè)只出現(xiàn)了一次的元素。
說明:
你的算法應(yīng)該具有線性時(shí)間復(fù)雜度。 你可以不使用額外空間來實(shí)現(xiàn)嗎?
我的題解:
class Solution(object): def singleNumber(self, nums): """ :type nums: List[int] :rtype: int """ a = 0 for num in nums: a = a ^ num return a
我的思路:
異或,兩個(gè)相同的數(shù)字的計(jì)算結(jié)果為0,最后剩余的則為唯一值
83. 刪除排序鏈表中的重復(fù)元素
難度:簡單
給定一個(gè)排序鏈表,刪除所有重復(fù)的元素,使得每個(gè)元素只出現(xiàn)一次。
我的題解:
# Definition for singly-linked list. # class ListNode(object): # def __init__(self, x): # self.val = x # self.next = None class Solution(object): def deleteDuplicates(self, head): """ :type head: ListNode :rtype: ListNode """ a = head if not a: return a while head.next: if head.next.val == head.val and head.next.next == None: head.next = None elif head.next.val == head.val and head.next.next: head.next = head.next.next else: head = head.next return a
我的思路:
當(dāng)存在前后節(jié)點(diǎn)一致的時(shí)候,則前一個(gè)節(jié)點(diǎn)的next指向后一個(gè)節(jié)點(diǎn)的next,跳過即可。
其他:
因?yàn)殒湵淼慕Y(jié)構(gòu)指向的是內(nèi)存,遍歷完之后指向最后的節(jié)點(diǎn),所以需要一個(gè)a指向頭結(jié)點(diǎn)。
100. 相同的樹
難度:簡單
給定兩個(gè)二叉樹,編寫一個(gè)函數(shù)來檢驗(yàn)它們是否相同。
如果兩個(gè)樹在結(jié)構(gòu)上相同,并且節(jié)點(diǎn)具有相同的值,則認(rèn)為它們是相同的。
我的題解:
# Definition for a binary tree node. # class TreeNode(object): # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution(object): def isSameTree(self, p, q): """ :type p: TreeNode :type q: TreeNode :rtype: bool """ if not p and not q: return True if p and q: if p.val == q.val: return self.isSameTree(p.left,q.left) and self.isSameTree(p.right,q.right) else: return False else: return False
我的思路:
遞歸,主要是判斷兩個(gè)節(jié)點(diǎn)的值是否一致,一致的前提下,判斷向下的左右節(jié)點(diǎn)及更向下是否一致。
88. 合并兩個(gè)有序數(shù)組
難度:簡單
給定兩個(gè)有序整數(shù)數(shù)組 nums1 和 nums2,將 nums2 合并到 nums1 中,使得 num1 成為一個(gè)有序數(shù)組。
說明:
初始化 nums1 和 nums2 的元素?cái)?shù)量分別為 m 和 n。
你可以假設(shè) nums1 有足夠的空間(空間大小大于或等于 m + n)來保存 nums2 中的元素。
我的題解:
class Solution(object): def merge(self, nums1, m, nums2, n): """ :type nums1: List[int] :type m: int :type nums2: List[int] :type n: int :rtype: None Do not return anything, modify nums1 in-place instead. """ while m>0 and n>0: if nums1[m-1] >=nums2[n-1]: nums1[m+n-1] = nums1[m-1] m -= 1 else: nums1[m+n-1] = nums2[n-1] n -= 1 if n >0 : nums1[:n] = nums2[:n]class Solution(object): def merge(self, nums1, m, nums2, n): """ :type nums1: List[int] :type m: int :type nums2: List[int] :type n: int :rtype: None Do not return anything, modify nums1 in-place instead. """ while m>0 and n>0: if nums1[m-1] >=nums2[n-1]: nums1[m+n-1] = nums1[m-1] m -= 1 else: nums1[m+n-1] = nums2[n-1] n -= 1 if n >0 : nums1[:n] = nums2[:n]
我的思路:
因?yàn)閚ums1[m+n]為空的部分,所以我們可以從后向前寫,判斷兩個(gè)數(shù)組的值,更大的數(shù)字不斷向后挪,挪到一定程度的時(shí)候,剩余部分則為更長的數(shù)組的剩余未判斷部分。
104. 二叉樹的最大深度
難度:簡單
給定一個(gè)二叉樹,找出其最大深度。
二叉樹的深度為根節(jié)點(diǎn)到最遠(yuǎn)葉子節(jié)點(diǎn)的最長路徑上的節(jié)點(diǎn)數(shù)。
說明: 葉子節(jié)點(diǎn)是指沒有子節(jié)點(diǎn)的節(jié)點(diǎn)。
我的題解:
# Definition for a binary tree node. # class TreeNode(object): # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution(object): def maxDepth(self, root): """ :type root: TreeNode :rtype: int """ if not root: return 0 if root.right is None and root.left is None: return 1 return max(self.maxDepth(root.right),self.maxDepth(root.left))+1
我的思路:
遞歸圖上為調(diào)用棧的情況,不斷向下尋找更遠(yuǎn)的根節(jié)點(diǎn)。
基線判斷為:節(jié)點(diǎn)是否為空
遞歸判斷為:節(jié)點(diǎn)不為空且左節(jié)點(diǎn)或右節(jié)點(diǎn)還有值
總結(jié)最近在看《算法圖解》,感覺對遞歸理解更深一點(diǎn),但學(xué)習(xí)之后重要的是實(shí)踐,還是要多做題。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/43353.html
摘要:寫在前面今天沒有叨逼叨但是又一次錯(cuò)過了競賽愛睡覺的小李下周要上班,下下周一定要參加了握拳認(rèn)真做題的分割線第一題兩地調(diào)度公司計(jì)劃面試人。第人飛往市的費(fèi)用為,飛往市的費(fèi)用為。示例輸入輸出解釋第一個(gè)人去市,費(fèi)用為。 寫在前面 今天沒有叨逼叨...但是又一次錯(cuò)過了競賽...愛睡覺的小李...下周要上班,下下周一定要參加了(握拳 認(rèn)真做題的分割線 第一題 1029. 兩地調(diào)度公司計(jì)劃面試2N人。...
摘要:給定的字符串只含有小寫英文字母,并且長度不超過。其他這題了,要重做看了其他的人的題解,使用的是無限逼近中位值的辦法,理論基礎(chǔ)應(yīng)該是泰勒公式。萬萬沒想到居然用到了泰勒公式手工執(zhí)行了下算法,反而理解的更快,但是泰勒公式還得再復(fù)習(xí)下。 寫在前面的話 今天持續(xù)做題ing,python有意思~今天的題有點(diǎn)虐心...興許是我太笨了...會努力學(xué)習(xí)的!動態(tài)規(guī)劃我來啦~ 開始做題 第一題 459. 重...
摘要:第二題漢明距離難度簡單兩個(gè)整數(shù)之間的漢明距離指的是這兩個(gè)數(shù)字對應(yīng)二進(jìn)制位不同的位置的數(shù)目。給出兩個(gè)整數(shù)和,計(jì)算它們之間的漢明距離。第三題買賣股票的最佳時(shí)機(jī)難度簡單給定一個(gè)數(shù)組,它的第個(gè)元素是一支給定股票第天的價(jià)格。 寫在前面 這幾天斷斷續(xù)續(xù)做了題目,也在慢慢體會一些數(shù)據(jù)思維。終于不用邊做視頻邊寫題目啦~開心~把這幾天的題解發(fā)一下~ 認(rèn)真做題的分割線 第一題 977. 有序數(shù)組的平方難度...
摘要:認(rèn)真做題的分割線第一題乘積最大子序列難度中等給定一個(gè)整數(shù)數(shù)組,找出一個(gè)序列中乘積最大的連續(xù)子序列該序列至少包含一個(gè)數(shù)。 寫在前面的話 慢慢轉(zhuǎn)變思路,不再死磕不會做的題,思路可以先借鑒,但是一定要吃透透。上周末看完看完了《算法圖解》,感覺對一些題目的思路有比較大的幫助,但是還是要在實(shí)踐中理解。 認(rèn)真做題的分割線 第一題 152. 乘積最大子序列難度:中等給定一個(gè)整數(shù)數(shù)組nums,找出一個(gè)...
摘要:不過可能還沒有抓到動態(tài)規(guī)劃的真諦,總覺得哪里需要再校正下思路。這題也是動態(tài)規(guī)劃的題目,目標(biāo)總是要分解為子問題。總結(jié)看算法圖解的時(shí)候,涉及動態(tài)規(guī)劃的小結(jié)中有這樣的每種動態(tài)規(guī)劃解決方案都涉及網(wǎng)格。 寫在前面的話 感覺做題越多遇到的寫法越多,有種躍躍欲試的感覺~ 認(rèn)真做題 第一題 70. 爬樓梯難度:簡單假設(shè)你正在爬樓梯。需要 n 階你才能到達(dá)樓頂。每次你可以爬 1 或 2 個(gè)臺階。你有多少...
閱讀 2418·2021-11-16 11:44
閱讀 1877·2021-10-12 10:12
閱讀 2160·2021-09-22 15:22
閱讀 3008·2021-08-11 11:17
閱讀 1505·2019-08-29 16:53
閱讀 2653·2019-08-29 14:09
閱讀 3474·2019-08-29 14:03
閱讀 3301·2019-08-29 11:09