ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

leetcode 59. 插入区间 60. 排列序列

2021-12-12 10:02:18  阅读:141  来源: 互联网

标签:__ direction 59 leetcode 60 num nlist col row


leetcode 59. 插入区间 60. 排列序列

59. 螺旋矩阵 II

难度中等541收藏分享切换为英文接收动态反馈

给你一个正整数 n ,生成一个包含 1n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix

示例 1:

img

输入:n = 3
输出:[[1,2,3],[8,9,4],[7,6,5]]

示例 2:

输入:n = 1
输出:[[1]]

提示:

  • 1 <= n <= 20

通过次数140,965

提交次数179,683

# -*- coding: utf-8 -*-
# !/usr/bin/env python
# @Author  : mtl
# @Desc    : ***
# @File    : 59.py
# @Software: PyCharm
from typing import List


class Solution:
    def generateMatrix(self, n: int) -> List[List[int]]:
        total = n * n
        direction = [[0, 1], [1, 0], [0, -1], [-1, 0]]
        i = 0
        matrix = [[False for _ in range(n)] for _ in range(n)]
        num = 0
        row, col = 0, 0
        while i < total:
            matrix[row][col] = i + 1
            row, col = row + direction[num][0], col + direction[num][1]
            if (row >= n or row < 0) or \
                    (col >= n or col < 0) or matrix[row][col] != False:
                row, col = row - direction[num][0], col - direction[num][1]
                num += 1
                if num >= len(direction):
                    num = 0
                row, col = row + direction[num][0], col + direction[num][1]
            i += 1
        return matrix

if __name__ == '__main__':
    n = 4
    print(Solution().generateMatrix(n))

60. 排列序列

难度困难603收藏分享切换为英文接收动态反馈

给出集合 [1,2,3,...,n],其所有元素共有 n! 种排列。

按大小顺序列出所有排列情况,并一一标记,当 n = 3 时, 所有排列如下:

  1. "123"
  2. "132"
  3. "213"
  4. "231"
  5. "312"
  6. "321"

给定 nk,返回第 k 个排列。

示例 1:

输入:n = 3, k = 3
输出:"213"

示例 2:

输入:n = 4, k = 9
输出:"2314"

示例 3:

输入:n = 3, k = 1
输出:"123"

提示:

  • 1 <= n <= 9
  • 1 <= k <= n!

通过次数94,360

提交次数179,415

# -*- coding: utf-8 -*-
# !/usr/bin/env python
# @Author  : mtl
# @Desc    : ***
# @File    : 60.py
# @Software: PyCharm
class Solution:
    def getPermutation(self, n: int, k: int) -> str:
        nlist = [str(i+1) for i in range(n)]
        result_list = []
        valid = False
        def dfs(nlist, n, alist):
            nonlocal result_list, k, valid
            if n <= 2:
                result_list.append(alist + [nlist[0], nlist[1]])
                result_list.append(alist + [nlist[1], nlist[0]])
                if len(result_list) > k:
                    valid = True
                return
            for i in range(len(nlist)):
                lnlist = nlist.copy()
                alist.append(nlist.pop(i))
                dfs(nlist, n - 1, alist)
                if valid:
                    return
                nlist = lnlist
                alist.pop()
        if n == 1:
            return "1"
        dfs(nlist, n, [])
        return "".join(result_list[k - 1])

    def getPermutation(self, n: int, k: int) -> str:
        factorial = [1]
        for i in range(1,n):
            factorial.append(factorial[-1] * i)
        a = [1] * (n + 1)
        k -= 1
        ans = ""
        for i in range(1,n+1):
            order = k // factorial[n - i] + 1
            for j in range(1,n+1):
                order -= a[j]
                if order == 0:
                    ans += str(j)
                    a[j] = 0
                    break
            k %= factorial[n - i]
        return ans



if __name__ == '__main__':
    n = 4
    k = 9
    a = [1,2,3]
    b = [2,3]
    # print(b.pop(1))
    print(Solution().getPermutation(n, k))
[n - i]
        return ans



if __name__ == '__main__':
    n = 4
    k = 9
    a = [1,2,3]
    b = [2,3]
    # print(b.pop(1))
    print(Solution().getPermutation(n, k))

标签:__,direction,59,leetcode,60,num,nlist,col,row
来源: https://blog.csdn.net/mtl1994/article/details/121797603

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有