某公司常见题刷题笔记

news2025/7/12 7:37:43

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

1,滑动平均值,官网

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

class MovingAverage:
    def __init__(self, size: int):
        self.size = size
        self.sum = 0
        self.q = deque()
    def next(self, val: int) -> float:
        if len(self.q) == self.size:
            self.sum -= self.q.popleft()
        self.sum += val
        self.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 False
            if p[j - 1] == '.':
                return True
            return s[i - 1] == p[j - 1]
        f = [[False] * (n + 1) for _ in range(m + 1)]
        f[0][0] = True
        for 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 0
        dp = []
        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)

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/38477.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

李宏毅:Life Long Learning

Life Long Learing 也是continual Learning&#xff0c;也是incremental learning 目录 Life-Long Learning vs Transfer Learning Evaluation Research Directions Selective Synaptic Plasticity——Regulization Based Additional Neural Resourcr Allocation Memo…

Python简介-Python3及环境配置

Python简介 Python是一种跨平台的计算机程序设计语言。 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。最初被设计用于编写自动化脚本(shell)&#xff0c;随着版本的不断更新和语言新功能的添加&#xff0c;越多被用于独立的、大型项目的开发。 Python语…

MFC的YUV播放器实现

MFC的YUV播放器实现 文章目录MFC的YUV播放器实现一、主要参考链接二、开发踩坑记录1、Gdiplus 绘图前置条件2、播放时点击滑竿能精准跳转3、鼠标悬停在滑竿上时显示预览小窗口本文记录使用MFC编写一个YUV播放器的过程&#xff0c;尽量实现播放器都有的常用功能。功能参考与网上…

四旋翼无人机学习第9节--OpenMV以及WIFI电路、供电电路再分析

文章目录0、参考与学习1、OpenMV插座电路2、OpenMV供电电路3、ESP8266电路分析3.0 绘制分享3.1 模块正面图3.2 模块背面图3.3 模块引脚介绍3.4 模块模式选择3.5 芯片手册参考电路4、供电电路分析4.1 电池接口与电源开关部分4.2 usb供电电路与电池电压降压电路4.3 5V降3.3V电路4…

[论文精度|博士论文]非结构环境下病虫害识别方法研究

概述 提出一种基于级联卷积神经网络的植物病害识别方法提出一种融合农田多源环境信息的害虫监测方法提出一种新的目标检测损失函数解决特征冲突问题 本文研究的主要方面在于特征提取。&#xff08;其他部分沿用目前最全面的公开数据和病虫害数据以及最先进的开源算法&#xf…

30岁之后身体还能像年轻的时候一样撸代码吗?

在IT圈流传着一句话&#xff0c;程序员吃的是青春饭。很多人认为&#xff0c;30岁是个阶段&#xff0c;在这个阶段后就需要往管理方向转型。因为在30岁之后身体再也不能像年轻的时候一样熬夜撸代码&#xff0c;而且继续从事一线开发的待遇也不如管理层优厚。至于转管理层失败的…

redis缓存一致性以及解决方案

一致性问题&#xff1a; 首先要到redis里面读取缓存&#xff0c;如果没有缓存&#xff0c;那么就到mysql里面去取数据&#xff0c;并且将其放置在缓存中 关于解决缓存一致性的问题&#xff0c;不难想到主要有两种解决方案&#xff0c;双更模式和删除模式 ** 双更模式&#xf…

【JVM】native关键字的使用

native关键字的使用一、JVM体系结构二、native是什么&#xff1f;三、native能干什么&#xff1f;四、native怎么使用&#xff1f;五、native总结在研读**《深入理解Java虚拟机》这本书时&#xff0c;看到 Java 虚拟机运行时数据区中有关本地方法栈**&#xff08;Native Method…

鲜花在线销售平台的设计与实现/鲜花商城/网上花店管理系统

摘 要 为了解决客户便捷地在网上购物&#xff0c;本文设计和开发了一个鲜花在线销售平台。本系统是基于web架构设计&#xff0c;SSM框架&#xff0c;javascript技术的前台页面设计与实现&#xff0c;使用Mysql数据库管理&#xff0c;综合采用java模式来完成系统的相关功能。主…

【GlobalMapper精品教程】028:栅格计算器的使用方法总结

文章目录 一、栅格计算器简介二、栅格计算器应用举例1. 归一化植被指数NDVI2. 归一化水体指数NDWI3. 归一化建筑指数NDBI一、栅格计算器简介 GlobalMapper中也提供了栅格计算器工具,可以方便的进行栅格计算、波段计算、指数计算等,使用方法有点儿像Envi软件。 用户可以使用系…

世界杯来了,让 Towhee 带你多语言「以文搜球」!

四年一度的世界杯已正式拉开战幕&#xff0c;各小组比赛正如火如荼地进行中。在这样一场球迷的盛宴中&#xff0c;不如让 Towhee 带你「以文搜球」&#xff0c;一览绿茵场上足球战将们的风采吧&#xff5e; 「以文搜球」是跨模态图文检索的一部分&#xff0c;如今最热门的跨模…

Leetcode刷题Day5休息 Day6----------哈希表

Leetcode刷题Day5休息 & Day6----------哈希表 1. 哈希表理论基础 数组、Set、Map 如果数据量小------------数组 如果数据量大------------Set 如果有Key、value------------Map 文章讲解&#xff1a;https://programmercarl.com/%E5%93%88%E5%B8%8C%E8%A1%A8%E7%90%86…

【雷达检测】基于复杂环境下的雷达目标检测技术(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜…

数据之道读书笔记-06面向“自助消费”的数据服务建设

数据之道读书笔记-06面向“自助消费”的数据服务建设 数据底座建设的目标是更好地支撑数据消费&#xff0c;在完成数据的汇聚、整合、联接之后&#xff0c;还需要在供应侧确保用户更便捷、更安全地获取数据。一方面业务人员希望尽可能快速地获取各种所需的数据&#xff0c;另一…

基于双目相机拍摄图像的深度信息提取和目标测距matlab仿真

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB程序 1.算法描述 双目相机一般由左眼和右眼两个水平放置的相机组成。当然也可以做成上下两个目&#xff0c;但我们见到的主流双目都是做成左右的。在左右双目的相机中&#xff0c;我们可以把两个相机都看作针…

大数据毕设选题 - 深度学习图像超分辨率重建(opencv python cnn)

文章目录0 前言1 什么是图像超分辨率重建2 应用场景3 实现方法4 SRResNet算法原理5 SRCNN设计思路6 代码实现6.1 代码结构组织6.2 train_srresnet6.3 训练效果7 最后0 前言 &#x1f525; Hi&#xff0c;大家好&#xff0c;这里是丹成学长的毕设系列文章&#xff01; &#x…

读写分离和主从复制

这是只有一个数据库的情形&#xff0c;此时增删改查都是针对这个数据库而言 存在两个问题&#xff1a;所有压力都是由一台数据库承担&#xff0c;数据库压力很大 而且&#xff0c;一旦这个数据库发生故障&#xff0c;数据丢失&#xff0c;拿数据就全都没了 现在有两个数据库&…

总结使人进步,4句真章的理解和实践

在“总结使人进步&#xff0c;遵循事物的客观发展规律&#xff1b;祸福相依&#xff0c;知行合一”这篇文章里&#xff0c;首次全面提出了4句真章。 这么多年&#xff0c;最有感触的4句话。 一、4句真章 1、总结使人进步 2、遵循事物的发展规律 3、祸福相依 4、知行合一 …

muduo库中实现Protbuf编码器与消息分发器

文章目录1. protobuf的type name反射机制2. Protobuf编码器2.1 protbuf传输格式2.2 message转换为Buffer2.3 Buffer转换为message2.4 onMessage和send3. 消息分发器dispatcher3.1 成员变量3.2 onProtobufMessage3.3 registerMessageCallback4. 简单RPC4.1 query.proto4.2 serve…

QT:debug日志—打不开头文件以及qDebug和Q_CLASSINFO的使用

这个是因为链接器在给定路径上搜索不到对应的头文件&#xff0c;而大多数的Qt相关的头文件都集中在一个include文件夹里&#xff1a; 我电脑上的路径是&#xff1a;C:\Qt\Qt5.9.7\5.9.7\msvc2017_64\include 然后我们在项目设置里&#xff1a; 注意&#xff0c;这边要加上\*&…