這幾天斷斷續續作了題目,也在慢慢體會一些數據思惟。
終於不用邊作視頻邊寫題目啦~
開心~
把這幾天的題解發一下~python
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便可。spa
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
個人思路:
爲了獲取最大的利潤,咱們必須找到最低的價格,並用當前日期的價格減去最低價格,得到利潤。
這題也是動態規劃
思路,最關鍵要找到最低價格是咱們必須判斷的點,接着判斷最大的利潤值,不斷進行比對。code
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
難度:簡單
給定一個字符串,你須要反轉字符串中每一個單詞的字符順序,同時仍保留空格和單詞的初始順序。
個人題解:blog
class Solution(object): def reverseWords(self, s): """ :type s: str :rtype: str """ l = s.split(" ") return " ".join(map(lambda x:x[::-1],l))
個人思路:
這題參考了評論裏的方案,python彷佛在字符串的處理上有先天的優點。
順便複習了下知識點:
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遞歸棧有趣~
可是效率不過高