leetcode 第167场周赛

5283. 二进制链表转整数

给你一个单链表的引用结点 head。链表中每个结点的值不是 0 就是 1。已知此链表是一个整数数字的二进制表示形式。

请你返回该链表所表示数字的 十进制值

单链表排序的题目没什么好说的

# Definition for singly-linked list.
# class ListNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution(object):
    def getDecimalValue(self, head):
        """
        :type head: ListNode
        :rtype: int
        """
        cnt = 0
        tmp = head
        while tmp:
            cnt = (cnt<<1) + tmp.val
            tmp = tmp.next
        return cnt
        

5124. 顺次数

我们定义「顺次数」为:每一位上的数字都比前一位上的数字大 1 的整数。

请你返回由 [low, high] 范围内所有顺次数组成的 有序 列表(从小到大排序)
提示:

  • 10 <= low <= high <= 10^9

范围比较小所以直接构造答案即可

class Solution(object):
    def sequentialDigits(self, low, high):
        """
        :type low: int
        :type high: int
        :rtype: List[int]
        """
        def check(x):
            return x>=low and x<=high
        tmp = [ i for i in range(1,10)]
        ans = []
        now = tmp[-1]
        for j in range(9):
            tmplist = []
            for i in tmp:
                if i%10<=8 :
                    now = i *10 + (i%10+1) 
                    tmplist.append(now)
                    if check(now):
                        ans.append(now)
            if now > high:
                 break
            tmp = tmplist
        return ans

5285. 元素和小于等于阈值的正方形的最大边长

给你一个大小为 m x n 的矩阵 mat 和一个整数阈值 threshold。

请你返回元素总和小于或等于阈值的正方形区域的最大边长;如果没有这样的正方形区域,则返回 0 。
提示:

  • 1 <= m, n <= 300
  • m == mat.length
  • n == mat[i].length
  • 0 <= mat[i][j] <= 10000
  • 0 <= threshold <= 10^5

初始化用O(1)时间求正方形区域和,然后通过二分边长范围确定答案

class Solution(object):
    def maxSideLength(self, mat, threshold):
        """
        :type mat: List[List[int]]
        :type threshold: int
        :rtype: int
        """
        m = len(mat)
        n = len(mat[0])
        cnt = [ [0]*(n+1) for i in range(m+1)]
        for i in range(m):
            for j in range(n):
                cnt[i][j] = mat[i][j]
                if i:
                    cnt[i][j] += cnt[i-1][j]
                if j:
                    cnt[i][j] += cnt[i][j-1]
                if i and j:
                    cnt[i][j] -= cnt[i-1][j-1]
        def check(x):
            if x==0:
                return True
            for i in range(x-1,m):
                for j in range(x-1,n):
                    if cnt[i][j] - cnt[i][j-x] - cnt[i-x][j] + cnt[i-x][j-x] <= threshold:
                        return True
            return False
        l,r = 0,min(m,n)
        ans = 0
        while l<=r:
            mid = (r+l)//2
            if check(mid):
                ans = mid
                l = mid+1
            else:
                r = mid -1
        return ans
            

5286. 网格中的最短路径 显示英文描述

给你一个 m * n 的网格,其中每个单元格不是 0(空)就是 1(障碍物)。每一步,您都可以在空白单元格中上、下、左、右移动。

如果您 最多 可以消除 k 个障碍物,请找出从左上角 (0, 0) 到右下角 (m-1, n-1) 的最短路径,并返回通过该路径所需的步数。如果找不到这样的路径,则返回 -1。

分层图的概念吧,想着是深搜,记忆化后还是超时,通过确定k>=(m+n-1)返回一些变态范围的答案后通过

class Solution(object):
    def shortestPath(self, grid, k):
        """
        :type grid: List[List[int]]
        :type k: int
        :rtype: int
        """
        
        m = len(grid)
        n = len(grid[0])
        limit = m*n+1
        if k>=(m+n-1):
            return m+n-2
        cnt = [ [ [limit]*(k+1) for j in range(n) ] for i in range(m) ]
        dis = [[0,1],[1,0],[0,-1],[-1,0]]
        def dfs(x,y,now,tmp):
            # print x,y,now
            cnt[x][y][tmp] = now
            for i in range(tmp+1,k+1):
                if cnt[x][y][i]<=now:
                    return 
            for dx,dy in dis:
                nx = x+dx
                ny = y+dy
                if nx<m and nx>=0 and ny>=0 and ny<n \
                and tmp-grid[nx][ny] >=0 \
                and now+grid[nx][ny]<cnt[nx][ny][tmp-grid[nx][ny]]:
                    dfs(nx,ny,now+1,tmp-grid[nx][ny])
        dfs(0,0,0,k-grid[0][0])
        tmp = limit
        for i in range(0,k+1):
            tmp = min(tmp,cnt[m-1][n-1][i])
        return -1  if tmp >= limit  else tmp

感想:

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

推荐阅读更多精彩内容

  • 1.把二元查找树转变成排序的双向链表 题目: 输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。 要求不...
    曲终人散Li阅读 3,314评论 0 19
  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 3,342评论 0 2
  • 第一章数和数的运算 一概念 (一)整数 1整数的意义 自然数和0都是整数。 2自然数 我们在数物体的时候,用来表示...
    meychang阅读 2,603评论 0 5
  • 日子,有点凉。晨起,依然写着自己的字。 从小就在被爱中长大,万般宠爱落在成长的岁月里,心中便生出了玫瑰的花香。随着...
    鸣菁姐姐阅读 461评论 3 0
  • “往后余生,风雪是你,平淡是你,清贫是你,富贵是你”今年最流行的抖音配乐,它所抒发的是对爱情婚姻的美好祝愿...
    忍不住想念_e70c阅读 476评论 0 2