某公司常见题刷题笔记
创始人
2024-04-13 05:05:40
0

LeetCode搞起来,虽说和实际业务没啥联系,但现在就卷起来了,没办法被迫卷起来。

1,滑动平均值,官网

给定窗口大小size,然后每次增加一个值value放入窗口,求此窗口内的平均值

class MovingAverage:def __init__(self, size: int):self.size = sizeself.sum = 0self.q = deque()def next(self, val: int) -> float:if len(self.q) == self.size:self.sum -= self.q.popleft()self.sum += valself.q.append(val)return self.sum / len(self.q)

2,正则匹配,力扣网

用*可以表示与前面的字母相同的字母,比如a*与aa是匹配的;用.可以表示任意字符,比如a.与ab是匹配的。由于要匹配的字符串长度是未知的,匹配字段长度与前者长度可存在差异,所以dp无疑

class Solution:def isMatch(self, s: str, p: str) -> bool:m, n = len(s), len(p)#s是字符串长度def matches(i: int, j: int) -> bool:if i == 0:return Falseif p[j - 1] == '.':return Truereturn s[i - 1] == p[j - 1]f = [[False] * (n + 1) for _ in range(m + 1)]f[0][0] = Truefor i in range(m + 1):for j in range(1, n + 1):if p[j - 1] == '*':f[i][j] |= f[i][j - 2]if matches(i, j - 1):f[i][j] |= f[i - 1][j]else:if matches(i, j):f[i][j] |= f[i - 1][j - 1]return f[m][n]

3,有效的数独,网页

判断9*9的数组是否是有效的数独,9*9分成3*3的大网格,每个网格都是3*3,1~9在此网格中只能出现一次,在9*9的每一行和每一列也只能出现一次。给定的.是空值(空白的),给定的数字是已知的,判断给定的数字是否是有效的数独。

class Solution {public boolean isValidSudoku(char[][] board) {int[][] rows = new int[9][9];int[][] columns = new int[9][9];int[][][] subboxes = new int[3][3][9];for (int i = 0; i < 9; i++) {for (int j = 0; j < 9; j++) {char c = board[i][j];if (c != '.') {int index = c - '0' - 1;rows[i][index]++;columns[j][index]++;subboxes[i / 3][j / 3][index]++;if (rows[i][index] > 1 || columns[j][index] > 1 || subboxes[i / 3][j / 3][index] > 1) {return false;}}}}return true;}
}

4,买卖股票的最大利润,link

给定数组prices,其中数字是当天收盘价格,可选择买入和卖出。

class Solution {public int maxProfit(int[] prices) {int n = prices.length;int[][] dp = new int[n][2];dp[0][0] = 0;dp[0][1] = -prices[0];for (int i = 1; i < n; ++i) {dp[i][0] = Math.max(dp[i - 1][0], dp[i - 1][1] + prices[i]);dp[i][1] = Math.max(dp[i - 1][1], dp[i - 1][0] - prices[i]);}return dp[n - 1][0];}
}

5,盛水最多,web link

此题不同于接雨水,给定边缘高度heights,找出其中两个边,使其满足其中盛水最多。

 6,整数转罗马数字,website link

字符          数值
I             1
V             5
X             10
L             50
C             100
D             500
M             1000罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做  XXVII, 即为 XX + V + II
通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地,数字 9 表示为 IX。这个特殊的规则只适用于以下六种情况:I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。
X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。 
C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。
class Solution:THOUSANDS = ["", "M", "MM", "MMM"]HUNDREDS = ["", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"]TENS = ["", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"]ONES = ["", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"]def intToRoman(self, num: int) -> str:return Solution.THOUSANDS[num // 1000] + \Solution.HUNDREDS[num % 1000 // 100] + \Solution.TENS[num % 100 // 10] + \Solution.ONES[num % 10]

7,吃糖果,link

n个糖果,其中类型在candyType中,其长度为n,set()后得到的个数即为类型个数,医生建议最多吃n/2个,其中n为偶数,那么最多吃到的类型有几个?这不是最简单的么,果然是。

class Solution:def distributeCandies(self, candyType: List[int]) -> int:length=len(candyType)types=set(candyType)type_num=len(types)return min(length//2,type_num)

8,最长递增子序列,link

此题是最长递增子序列而非枚举所有的递增子序列

class Solution:def lengthOfLIS(self, nums: List[int]) -> int:if not nums:return 0dp = []for i in range(len(nums)):dp.append(1)for j in range(i):if nums[i] > nums[j]:dp[i] = max(dp[i], dp[j] + 1)return max(dp)

愿我们终有重逢之时,而你还记得我们曾经讨论的话题 

相关内容

热门资讯

银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
月入8000+的steam搬砖... 大家好,我是阿阳 今天要给大家介绍的是 steam 游戏搬砖项目,目前...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...