leetcode 第157场周赛

1217. 玩筹码

数轴上放置了一些筹码,每个筹码的位置存在数组 chips 当中。

你可以对 任何筹码 执行下面两种操作之一(不限操作次数,0 次也可以):

  • 将第 i 个筹码向左或者右移动 2 个单位,代价为 0
  • 将第 i 个筹码向左或者右移动 1 个单位,代价为 1

最开始的时候,同一位置上也可能放着两个或者更多的筹码。

返回将所有筹码移动到同一位置(任意位置)上所需要的最小代价。

猜了下结论,答案一定存在chips数组当中,我们直接遍历chips统计答案

class Solution(object):
    def minCostToMoveChips(self, chips):
        """
        :type chips: List[int]
        :rtype: int
        """
        ans = len(chips)
        for  i in chips:
            cnt = 0
            for j in chips:
                tmp = i-j if i-j>0 else j-i
                cnt += (tmp & 1)
            ans = min(cnt,ans)
        return ans

1218. 最长定差子序列

给你一个整数数组 arr 和一个整数 difference,请你找出 arr 中所有相邻元素之间的差等于给定 difference 的等差子序列,并返回其中最长的等差子序列的长度。

没有想太多,直接字典保留状态。递推上一位的状态,通过上一位的状态来更新现在的状态。并且更新答案

class Solution(object):
    def longestSubsequence(self, arr, difference):
        """
        :type arr: List[int]
        :type difference: int
        :rtype: int
        """
        mp = {}
        ans = 1
        for i in arr:
            tmp = max(mp.get(i-difference,0)+1,mp.get(i,0))
            mp[i] = tmp
            ans = max(ans,tmp)
        return ans

1219. 黄金矿工

你要开发一座金矿,地质勘测学家已经探明了这座金矿中的资源分布,并用大小为 m * n 的网格 grid 进行了标注。每个单元格中的整数就表示这一单元格中的黄金数量;如果该单元格是空的,那么就是 0

为了使收益最大化,矿工需要按以下规则来开采黄金:

  • 每当矿工进入一个单元,就会收集该单元格中的所有黄金。

  • 矿工每次可以从当前位置向上下左右四个方向走。

  • 每个单元格只能被开采(进入)一次。

  • 不得开采(进入)黄金数目为 0 的单元格。

  • 矿工可以从网格中 任意一个 有黄金的单元格出发或者是停止。

    范围比较小,可以考虑进行深度优先搜索,从每一个格子出发的最终答案就是经过的路径,通过确定路径和更新答案。

    class Solution(object):
        def getMaximumGold(self, grid):
            """
            :type grid: List[List[int]]
            :rtype: int
            """
            m = len(grid)
            n = len(grid[0])
            ans = 0
            def check(x,y):
                if x>=0 and x<m and y>=0 and y<n and grid[x][y]:
                    return True
            def dfs(x,y):
                if check(x,y):
                    tmp = grid[x][y]
                    grid[x][y] = 0
                    ans = 0
                    if check(x-1,y):
                        ans = max(ans,dfs(x-1,y))
                    if check(x+1,y):
                        ans = max(ans,dfs(x+1,y))
                    if check(x,y-1):
                        ans = max(ans,dfs(x,y-1))
                    if check(x,y+1):
                        ans = max(ans,dfs(x,y+1))
                    grid[x][y] = tmp
                    return tmp + ans
                else:
                    return 0 
            for i in range(m):
                for j in range(n):
                    ans = max(ans,dfs(i,j))
            return ans
    

1220. 统计元音字母序列的数目

给你一个整数 n,请你帮忙统计一下我们可以按下述规则形成多少个长度为 n 的字符串:

  • 字符串中的每个字符都应当是小写元音字母('a', 'e', 'i', 'o', 'u'
  • 每个元音 'a' 后面都只能跟着 'e'
  • 每个元音 'e' 后面只能跟着 'a' 或者是 'i'
  • 每个元音 'i' 后面 不能 再跟着另一个 'i'
  • 每个元音 'o' 后面只能跟着 'i' 或者是 'u'
  • 每个元音 'u' 后面只能跟着 'a'

由于答案可能会很大,所以请你返回 模 10^9 + 7 之后的结果。

提示:

  • 1 <= n <= 2 * 10^4

    因为递推关系明确,我们可以初始化n=1,以某一元音结尾时的状态,递推出n+1时以某一元音结尾的状态。 当然也可以初始化好2 * 10^4的答案,通过访问答案数组直接返回结果

    class Solution(object):
        def countVowelPermutation(self, n):
            """
            :type n: int
            :rtype: int
            """
            dp = [ {'a':0,'e':0,'i':0,'o':0,'u':0} for i in range(n) ]
            dp[0] = {'a':1,'e':1,'i':1,'o':1,'u':1}
            mod = 10**9+7 
            for i in range(n-1):
                # 每个元音 'a' 后面都只能跟着 'e'
                dp[i+1]['e'] += dp[i]['a'] 
                # 每个元音 'e' 后面只能跟着 'a' 或者是 'i'
                dp[i+1]['a'] += dp[i]['e']
                dp[i+1]['i'] += dp[i]['e']
                # 每个元音 'i' 后面 不能 再跟着另一个 'i'
                dp[i+1]['a'] += dp[i]['i']
                dp[i+1]['e'] += dp[i]['i']
                dp[i+1]['o'] += dp[i]['i']
                dp[i+1]['u'] += dp[i]['i']
                # 每个元音 'o' 后面只能跟着 'i' 或者是 'u'
                dp[i+1]['i'] += dp[i]['o']
                dp[i+1]['u'] += dp[i]['o']
                # 每个元音 'u' 后面只能跟着 'a'
                dp[i+1]['a'] += dp[i]['u']
                for j in dp[0].keys():
                    dp[i+1][j] = dp[i+1][j] % mod
            ans = 0
            for i,j in dp[n-1].items():
                ans = (ans+j)%mod
            return ans
    
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,919评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,567评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,316评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,294评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,318评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,245评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,120评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,964评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,376评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,592评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,764评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,460评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,070评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,697评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,846评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,819评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,665评论 2 354

推荐阅读更多精彩内容

  • "use strict";function _classCallCheck(e,t){if(!(e instanc...
    久些阅读 2,030评论 0 2
  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 3,341评论 0 2
  • 目录: Android:Android 0.*Android 1.*Android 2.*Android 3.*A...
    敲代码的令狐葱阅读 3,846评论 0 2
  • Fortran Best Practices ====================== .. highligh...
    boliecon阅读 185评论 0 1
  • 地狱空荡荡,恶魔在人间! 今天看到这则触目惊心的新闻,忍不住浑身发抖,气到说不出一句话。 每个身为家长的父母,都深...
    小七楼阁阅读 181评论 0 0