leetcode日??偨Y(jié)

566,581,605,628,643,661,665

我們注重客戶提出的每個要求,我們充分考慮每一個細節(jié),我們積極的做好成都網(wǎng)站設(shè)計、成都做網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)服務(wù),我們努力開拓更好的視野,通過不懈的努力,成都創(chuàng)新互聯(lián)贏得了業(yè)內(nèi)的良好聲譽,這一切,也不斷的激勵著我們更好的服務(wù)客戶。 主要業(yè)務(wù):網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)站設(shè)計,微信小程序,網(wǎng)站開發(fā),技術(shù)開發(fā)實力,DIV+CSS,PHP及ASP,ASP.Net,SQL數(shù)據(jù)庫的技術(shù)開發(fā)工程師。

566:重塑矩陣

題目描述:

函數(shù) reshape,它可以將一個矩陣重塑為另一個大小不同的新矩陣,但保留其原始數(shù)據(jù)。給出一個由二維數(shù)組表示的矩陣,以及兩個正整數(shù)r和c,分別表示想要的重構(gòu)的矩陣的行數(shù)和列數(shù)。重構(gòu)后的矩陣需要將原始矩陣的所有元素以相同的行遍歷順序填充。如果具有給定參數(shù)的reshape操作是可行且合理的,則輸出新的重塑矩陣;否則,輸出原始矩陣。

思路:

判斷個數(shù)一樣,把原矩陣寫成生成器,一個一個往外出數(shù)據(jù),按照行列填充到新矩陣

代碼:

class Solution(object):

?

????def matrixReshape(self, nums, r, c):

?

????????"""

?

????????:type nums: List[List[int]]

?

????????:type r: int

?

????????:type c: int

?

????????:rtype: List[List[int]]

????????function(){ //XM返傭?http://www.fx61.com/brokerlist/xm.html

?

????????"""

?

????????if r*c != len(nums)*len(nums[0]):

?

????????????return nums

?

????????def num(nums):

?

????????????for row in nums:

?

????????????????for element in row:

?

????????????????????yield element

?

????????g=num(nums)

?

????????result=[]

?

????????for i in range(r):

?

????????????row=[]

?

????????????for j in range(c):

?

????????????????row.append(next(g))

?

????????????result.append(row)

?

????????return result

?

581:最短無序連續(xù)子數(shù)組

題目描述:

給定一個整數(shù)數(shù)組,你需要尋找一個連續(xù)的子數(shù)組,如果對這個子數(shù)組進行升序排序,那么整個數(shù)組都會變?yōu)樯蚺判颉D阏业降淖訑?shù)組應(yīng)是最短的,請輸出它的長度。

思路:

從左往右遍歷,如果最左位置上的數(shù)為數(shù)組中最小的值,則pop掉;從右往左遍歷,如果最右位置上的數(shù)為數(shù)組中最大的值,則pop掉;最終數(shù)組長度為子數(shù)組需要排序的長度。

代碼:

class Solution(object):

????def findUnsortedSubarray(self, nums):

????????"""

????????:type nums: List[int]

????????:rtype: int

????????"""

????????if nums==sorted(nums):

????????????return 0

????????while nums[-1]==max(nums):

????????????nums.pop(-1)

????????while nums[0]==min(nums):

????????????nums.pop(0)

????????return len(nums)

605:種花問題

題目描述:

假設(shè)你有一個很長的花壇,一部分地塊種植了花,另一部分卻沒有??墒牵ɑ懿荒芊N植在相鄰的地塊上,它們會爭奪水源,兩者都會死去。給定一個花壇(表示為一個數(shù)組包含0和1,其中0表示沒種植花,1表示種植了花),和一個數(shù)n。能否在不打破種植規(guī)則的情況下種入n朵花?能則返回True,不能則返回False。

思路:

想添加一個數(shù)字必須是 1.開頭兩個0 [0,0,…] 2.結(jié)尾兩個0 […,0,0] 3.中間三個0 […,0,0,0,…],所以前后補零處理邊界看是否三個連續(xù)的位置都為0.

代碼:

class Solution(object):

????def canPlaceFlowers(self, flowerbed, n):

????????"""

????????:type flowerbed: List[int]

????????:type n: int

????????:rtype: bool

????????"""

????????tmp=[0]+flowerbed+[0]

????????for i in range(1,len(tmp)-1):

????????????if tmp[i]==0 and tmp[i-1]==0 and tmp[i+1]==0:

????????????????tmp[i]=1

????????????????n-=1

????????if n<=0:

????????????return True

????????else:

????????????return False

?????????

???628:三個數(shù)的最大乘積

題目描述:

給定一個整型數(shù)組,在數(shù)組中找出由三個數(shù)組成的最大乘積,并輸出這個乘積。

思路:

1:排序,如果沒有負數(shù)則后面三個數(shù)的乘積為最大,若有負數(shù),則可比較前兩個值及最后一個最大值的乘積與最后三個值乘積誰更大。

2:求出數(shù)組中最大的三個數(shù)以及最小的兩個數(shù),因此我們可以不用排序,用線性掃描直接得出這五個數(shù)。

代碼:

class Solution(object):

????def maximumProduct(self, nums):

????????"""

????????:type nums: List[int]

????????:rtype: int

????????"""

????????nums.sort()

????????return max(nums[0]*nums[1]*nums[-1],nums[-1]*nums[-2]*nums[-3])

?

643:子數(shù)組最大平均數(shù)Ⅰ
題目描述:
給定 n 個整數(shù),找出平均數(shù)最大且長度為k的連續(xù)子數(shù)組,并輸出該最大平均數(shù)。
思路:
找出子數(shù)組中長度為k的最大值,然后除以長度。
滑動窗口 當(dāng)移動一位的時候 只需要減去前一個i - 1 加上新的一個i + k - 1

代碼:

?

?

class Solution(object):

?

????def findMaxAverage(self, nums, k):

?

????????"""

?

????????:type nums: List[int]

?

????????:type k: int

?

????????:rtype: float

?

????????"""

?

????????ave=sum(nums[:k])

?

????????tmp=ave

?

????????for i in range(len(nums)-k):

?

????????????tmp=tmp-nums[i]+nums[i+k]

?

????????????if tmp>ave:

?

????????????????ave=tmp

?

????????return ave*1.0/k

?

661:圖片平滑器

題目描述:

包含整數(shù)的二維矩陣 M 表示一個圖片的灰度。你需要設(shè)計一個平滑器來讓每一個單元的灰度成為平均灰度(向下舍入),平均灰度的計算是周圍的8個單元和它本身的值求平均,如果周圍的單元格不足八個,則盡可能多的利用它們。

思路:

數(shù)組補邊法消除特殊狀態(tài),將原數(shù)組周圍用-1填充,構(gòu)成新數(shù)組,結(jié)果i行j列的值即為該數(shù)組i行j列為左上角元素的3X3矩陣的和+加上-1的個數(shù),再除以9減去-1的個數(shù)

代碼:

?

?

class Solution(object):

?

????def imageSmoother(self, M):

?

????????"""

?

????????:type M: List[List[int]]

?

????????:rtype: List[List[int]]

?

????????"""

?

????????row=len(M)

?

????????clu=len(M[0])

?

????????M.insert(0,[-1]*clu)

?

????????M.append([-1]*clu)

?

????????for i in range(len(M)):

?

????????????M[i].insert(0,-1)

?

????????????M[i].append(-1)

?

????????res=[]

?

????????for i in range(row):

?

????????????row=[]

?

????????????for j in range(clu):

?

????????????????lst=[M[i][j],M[i][j+1],M[i][j+2],M[i+1][j],M[i+1][j+1],M[i+1][j+2],M[i+2][j],M[i+2][j+1],M[i+2][j+2]]

?

????????????????n=lst.count(-1)

?

????????????????item=int((sum(lst)+n)/(9-n))

?

????????????????row.append(item)

?

????????????res.append(row)

?

????????return res

?

665:非遞減數(shù)列

題目描述:

給定一個長度為 n 的整數(shù)數(shù)組,你的任務(wù)是判斷在最多改變1個元素的情況下,該數(shù)組能否變成一個非遞減數(shù)列。

思路:

使前一個數(shù)字小于或等于當(dāng)前數(shù)字

使當(dāng)前數(shù)字等于先前的數(shù)字

當(dāng)找到nums[i-1] > nums[i],采用方式一,通過改變nums[i-1]的值,這樣不會影響了后續(xù)操作。還有,如果nums[i-2] > nums[i],采用方式二,改變nums[i]的值。

?

代碼:

?

?

class Solution(object):

?

????def checkPossibility(self, nums):

?

????????"""

?

????????:type nums: List[int]

?

????????:rtype: bool

?

????????"""

?

????????if len(nums)<=2:

?

????????????return True

?

????????for i in range(0,len(nums)-1):

?

????????????if i==0 and nums[i]>nums[i+1] and nums[i+1]<=nums[i+2]:

?

????????????????nums[i]=nums[i+1]

?

????????????????break

?

????????????elif i != 0:

?

????????????????if nums[i]>nums[i+1]:

?

????????????????????if nums[i+1]>=nums[i-1]:

?

????????????????????????nums[i]=nums[i+1]

?

????????????????????else:

?

????????????????????????nums[i+1]=nums[i]

?

????????????????????break

?

????????for i in range(0,len(nums)-1):

?

????????????if nums[i]>nums[i+1]:

?

????????????????return False

?

????????else:

?

????????????return True

?

?

分享題目:leetcode日??偨Y(jié)
網(wǎng)站URL:http://bm7419.com/article22/pccdcc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站網(wǎng)頁設(shè)計公司、軟件開發(fā)網(wǎng)站導(dǎo)航搜索引擎優(yōu)化、App設(shè)計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)