leetcode每日一題 python解法 4月8日

難度:中等

題目內(nèi)容:

地上有一個(gè)m行n列的方格,從坐標(biāo) [0,0] 到坐標(biāo) [m-1,n-1] 。一個(gè)機(jī)器人從坐標(biāo) [0, 0] 的格子開始移動(dòng),它每次可以向左、右、上、下移動(dòng)一格(不能移動(dòng)到方格外),也不能進(jìn)入行坐標(biāo)和列坐標(biāo)的數(shù)位之和大于k的格子。例如,當(dāng)k為18時(shí),機(jī)器人能夠進(jìn)入方格 [35, 37] ,因?yàn)?+5+3+7=18。但它不能進(jìn)入方格 [35, 38],因?yàn)?+5+3+8=19。請問該機(jī)器人能夠到達(dá)多少個(gè)格子?

示例 1:

輸入:m = 2, n = 3, k = 1
輸出:3
示例 1:

輸入:m = 3, n = 1, k = 0
輸出:1
提示:

1 <= n,m <= 100
0 <= k <= 20

題解:

emmm那以6為例的話


image.png

可以看出大概就是這個(gè)形狀,所以直接加就好了
如果行數(shù)和列數(shù)都比7大那就能取個(gè)三角形
如果不夠就得截取

class Solution:
    def movingCount(self, m: int, n: int, k: int) -> int:
        if m >= k +1 and n >= k + 1:
            return self.calTri(k+1)
        elif m >=k+1 and n < k+1:
            return self.calTri(k+1) - self.calTri(k+1-n)
        elif m < k+1 and n >=k+1:
            return self.calTri(k+1) - self.calTri(k+1-m)
        elif m + n >  k+1:
            return self.calTri(k+1) - self.calTri(k+1-m) - self.calTri(k+1-n) 
        else:
            return m*n
    def calTri(self,x):
        return int((1 + x)*x/2)

那就可以很簡單的做出了
不過雖然數(shù)學(xué)方法又簡單又高效
但是對編程知識幫助不是很大
還是應(yīng)該用BFS之類的編程方法嘗試一下實(shí)現(xiàn)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 在C語言中,五種基本數(shù)據(jù)類型存儲空間長度的排列順序是: A)char B)char=int<=float C)ch...
    夏天再來閱讀 3,993評論 0 2
  • CTF中那些腦洞大開的編碼和加密 0x00 前言 正文開始之前先閑扯幾句吧,玩CTF的小伙伴也許會遇到類似這樣的問...
    查無此人asdasd閱讀 6,409評論 0 19
  • 1. 找出數(shù)組中重復(fù)的數(shù)字 題目:在一個(gè)長度為n的數(shù)組里的所有數(shù)字都在0到n-1的范圍內(nèi)。數(shù)組中某些數(shù)字是重復(fù)的,...
    BookThief閱讀 1,999評論 0 2
  • "use strict";function _classCallCheck(e,t){if(!(e instanc...
    久些閱讀 2,132評論 0 2
  • “你救不活一朵死掉的花,也愛不了一個(gè)濫情的人?!?比單身更慘的是什么? 是明明不單身,但所有人都覺得你沒對象。 0...
    鯉喃閱讀 504評論 3 2

友情鏈接更多精彩內(nèi)容