摘要:第二題漢明距離難度簡單兩個整數之間的漢明距離指的是這兩個數字對應二進制位不同的位置的數目。給出兩個整數和,計算它們之間的漢明距離。第三題買賣股票的最佳時機難度簡單給定一個數組,它的第個元素是一支給定股票第天的價格。
寫在前面
這幾天斷斷續續做了題目,也在慢慢體會一些數據思維。
終于不用邊做視頻邊寫題目啦~
開心~
把這幾天的題解發一下~
977. 有序數組的平方
難度:簡單
給定一個按非遞減順序排序的整數數組 A,返回每個數字的平方組成的新數組,要求也按非遞減順序排序。
我的題解:
class Solution(object): def sortedSquares(self, A): """ :type A: List[int] :rtype: List[int] """ result = [0]*len(A) m = 0 n = k = len(A)-1 while m <= n: if A[m]**2 < A[n]**2: result[k] = A[n]**2 n = n -1 else: result[k] = A[m]**2 m = m + 1 k = k - 1 return result
我的思路:
這題參考了思路,有點類似之前做過的一題,因為可能存在負數,而且為了減小循環長度,分別從兩頭來進行計算判斷,并判斷最大值,從數組的末尾開始計入。
461. 漢明距離
難度:簡單
兩個整數之間的漢明距離指的是這兩個數字對應二進制位不同的位置的數目。
給出兩個整數x和y,計算它們之間的漢明距離。
我的題解:
class Solution(object): def hammingDistance(self, x, y): """ :type x: int :type y: int :rtype: int """ return (bin(x^y)).count("1")
我的思路:
這題用異或,判斷二進制下剩余的1即可。
121. 買賣股票的最佳時機
難度:簡單
給定一個數組,它的第 i 個元素是一支給定股票第 i 天的價格。
如果你最多只允許完成一筆交易(即買入和賣出一支股票),設計一個算法來計算你所能獲取的最大利潤。
注意你不能在買入股票前賣出股票。
我的題解:
class Solution(object): def maxProfit(self, prices): """ :type prices: List[int] :rtype: int """ min_p, max_p = 999999, 0 for i in range(len(prices)): min_p = min(min_p, prices[i]) max_p = max(max_p, prices[i] - min_p) return max_p
我的思路:
為了獲取最大的利潤,我們必須找到最低的價格,并用當前日期的價格減去最低價格,獲得利潤。
這題也是動態規劃思路,最關鍵要找到最低價格是我們必須判斷的點,接著判斷最大的利潤值,不斷進行比對。
122. 買賣股票的最佳時機 II
難度:簡單
給定一個數組,它的第 i 個元素是一支給定股票第 i 天的價格。
設計一個算法來計算你所能獲取的最大利潤。你可以盡可能地完成更多的交易(多次買賣一支股票)。
注意:你不能同時參與多筆交易(你必須在再次購買前出售掉之前的股票)。
我的題解:
class Solution(object): def maxProfit(self, prices): """ :type prices: List[int] :rtype: int """ profit = 0 for i in range(len(prices)-1): if prices[i+1] - prices[i] > 0: profit += prices[i+1] - prices[i] return profit
我的思路:
這題需要考慮到,
1.當天賣出后可以當天繼續買入;
2.為了買賣盡可能多次,當后來日期的金額>買入日期的時候,即做賣出動作,獲取收益。
557. 反轉字符串中的單詞 III
難度:簡單
給定一個字符串,你需要反轉字符串中每個單詞的字符順序,同時仍保留空格和單詞的初始順序。
我的題解:
class Solution(object): def reverseWords(self, s): """ :type s: str :rtype: str """ l = s.split(" ") return " ".join(map(lambda x:x[::-1],l))
我的思路:
這題參考了評論里的方案,python似乎在字符串的處理上有先天的優勢。
順便復習了下知識點:
join 用于連接字符串 "-".join([a,b])
map map(函數,需要處理的對象)
lambda表達式 匿名函數,一目了然的輸入和輸出
[:]數組默認參數為0和len-1,等于復制一份數組,即a[:]=a
[::-1] 當步長小于0的時候,默認缺省值為-1和len-1,即a[::-1] = a[len(a)-1:-1:-1],即逆序遍歷
231. 2的冪
難度:簡單
給定一個整數,編寫一個函數來判斷它是否是 2 的冪次方
我的題解:
class Solution(object): def isPowerOfTwo(self, n): """ :type n: int :rtype: bool """ if n == 0: return False if n == 1: return True if n % 2 == 1: return False elif n == 2: return True else: return self.isPowerOfTwo(n/2)
我的思路:
這題用了非常暴力的方法,但是還是提交錯了兩次,少判斷了為0和1的情況。
因為自己寫的遞歸,就非常的開心...emmm遞歸棧有趣~
但是效率不太高
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/43470.html
摘要:寫在前面今天沒有叨逼叨但是又一次錯過了競賽愛睡覺的小李下周要上班,下下周一定要參加了握拳認真做題的分割線第一題兩地調度公司計劃面試人。第人飛往市的費用為,飛往市的費用為。示例輸入輸出解釋第一個人去市,費用為。 寫在前面 今天沒有叨逼叨...但是又一次錯過了競賽...愛睡覺的小李...下周要上班,下下周一定要參加了(握拳 認真做題的分割線 第一題 1029. 兩地調度公司計劃面試2N人。...
摘要:寫在前面今天的小李的目標是排序算法,果然還是要下手寫才會更有體會,也更記得住。排序算法冒泡排序主要是比對相鄰兩個數之間的大小關系,不斷將較大值交換至最后。 寫在前面 今天的小李的目標是排序算法,果然還是要下手寫才會更有體會,也更記得住。 認真做題的分割線 第一題 215. 數組中的第K個最大元素難度:中等在未排序的數組中找到第k個最大的元素。請注意,你需要找的是數組排序后的第k個最大的...
摘要:第五題對稱二叉樹難度簡單給定一個二叉樹,檢查它是否是鏡像對稱的。第十六題最大連續的個數難度簡單給定一個二進制數組,計算其中最大連續的個數。第十八題平方數之和難度簡單給定一個非負整數,你要判斷是否存在兩個整數和,使得。 寫在前面 最近忙著調教新裝備,沒有及時的寫題解,但是沒有在偷懶沒刷題喔~來認真整理下最近做的題目~ 之前考慮按tag來刷題,后來收到了推薦的leetcode題解,就根據上...
摘要:給定的字符串只含有小寫英文字母,并且長度不超過。其他這題了,要重做看了其他的人的題解,使用的是無限逼近中位值的辦法,理論基礎應該是泰勒公式。萬萬沒想到居然用到了泰勒公式手工執行了下算法,反而理解的更快,但是泰勒公式還得再復習下。 寫在前面的話 今天持續做題ing,python有意思~今天的題有點虐心...興許是我太笨了...會努力學習的!動態規劃我來啦~ 開始做題 第一題 459. 重...
摘要:認真做題的分割線第一題乘積最大子序列難度中等給定一個整數數組,找出一個序列中乘積最大的連續子序列該序列至少包含一個數。 寫在前面的話 慢慢轉變思路,不再死磕不會做的題,思路可以先借鑒,但是一定要吃透透。上周末看完看完了《算法圖解》,感覺對一些題目的思路有比較大的幫助,但是還是要在實踐中理解。 認真做題的分割線 第一題 152. 乘積最大子序列難度:中等給定一個整數數組nums,找出一個...
閱讀 1557·2021-11-25 09:43
閱讀 2344·2019-08-30 15:55
閱讀 1469·2019-08-30 13:08
閱讀 2675·2019-08-29 10:59
閱讀 821·2019-08-29 10:54
閱讀 1590·2019-08-26 18:26
閱讀 2550·2019-08-26 13:44
閱讀 2658·2019-08-23 18:36