自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 收藏
  • 关注

原创 牛顿法logistic回归

牛顿法求解Logistic Regression1、Logistic回归模型、牛顿法推导公式Logistic模型为(xi\mathbf{x_i}xi​是第iii个样本,为行向量,w\mathbf{w}w是特征向量,为一个列向量)KaTeX parse error: Unknown column alignment: * at position 60: … \begin{array}{*̲*lr**} p(y_{i}…其损失函数为l=Loss(w)=−1mln⁡p(y∣x,w)=−[yTl

2021-10-17 21:29:06 711

原创 基于HMM的拼音输入法

基于隐马尔可夫的拼音输入法

2022-08-15 14:39:47 491 1

原创 判断国际象棋棋盘中一个格子的颜色

原题指路判断国际象棋棋盘中一个格子的颜色解题思路也是一道很水的题……只需要将其中的字母坐标变换为数字,判断两个坐标之和的奇偶性即可。奇数:白色偶数:黑色时间复杂度:O(1)O(1)O(1)空间复杂度:O(1)O(1)O(1)代码class Solution: def squareIsWhite(self, coordinates: str) -> bool: dict = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5,

2021-05-05 20:48:37 383

原创 截断句子

原题指路截断句子解题思路emmmmmm一道挺水的题,可以直接用split()函数取空格作为截断,然后新建一个列表,最后在各元素之间插入空格组成一个新字符串。时间复杂度:O(k)O(k)O(k)空间复杂度:O(s.length)O(s.length)O(s.length)代码class Solution: def truncateSentence(self, s: str, k: int) -> str: temp = [n for n in s.split()]

2021-05-05 20:33:41 180

原创 查找用户的活跃分钟数

原题指路查找用户的活跃分钟数解题思路这道题由于用户的ID值过于随机,所以在记录用户活跃分钟数的时候同样采用了哈希表的方式进行记录。此外,由于用户在同一个时间点可能进行多个操作,但是只会将这个时间点记为一个活跃分钟数,所以可以采用哈希表进行时间点是否重复的判断。时间复杂度:O(n)O(n)O(n)(最坏情况下为O(n2)O(n^2)O(n2))空间复杂度:O(n)O(n)O(n)代码class Solution: def findingUsersActiveMinutes(self,

2021-05-05 20:23:39 194

原创 采购方案

原题指路采购方案解题思路刚开始看到这道题的时候,我大意了,以为简单题就可以直接双重循环暴力通过,然而……O(n2)O(n^2)O(n2)的做法果然被卡住了。因此,这道题需要至少O(nlog⁡n)O(n\log{n})O(nlogn)的做法来解决,因此采用先排序而后二分搜索的方法来进行解决。时间复杂度:O(nlog⁡n)O(n\log{n})O(nlogn)(排序和主循环体均为O(nlog⁡n)O(n\log{n})O(nlogn))空间复杂度:O(1)O(1)O(1)代码class Solu

2021-05-04 21:54:23 90

原创 Pow(x, n)

原题指路Pow(x, n)解题思路看到pow函数,上来就是一个快速幂。快速幂递归式xn={xn−1⋅x,ifnisoddxn2⋅xn2,ifninevenbutnot01,ifnis0x^n=\left\{\begin{array}{l}x^{n-1}\cdot x,&&if&n&is&odd\\x^{\frac{n}{2}}\cdot x^{\frac{n}{2}},&&if&n&in&even&b

2021-04-15 17:32:31 94

原创 整数转罗马数字

原题指路整数转罗马数字解题思路根据罗马数字的规定,从左到右每次都要选择尽可能大的罗马数字符号,所以……这简直是天然就满足贪心选择性质和最优子结构性质。因此,我们可以先建立一个罗马数字与整数相互转换的列表(从大到小进行排列的一张哈希表),然后通过遍历这个列表,每次向答案中加入当前整数所能包含的最大的罗马数字符号。时间复杂度:O(1)O(1)O(1)空间复杂度:O(1)O(1)O(1)代码class Solution: ''' 用于将整数转化为罗马数字的模块 '''

2021-04-15 13:59:40 83

原创 替换字符串中的括号内容

原题指路替换字符串中的括号内容题目描述给你一个字符串 s ,它包含一些括号对,每个括号中包含一个 非空 的键。比方说,字符串 "(name)is(age)yearsold" 中,有 两个 括号对,分别包含键 "name" 和 "age" 。你知道许多键对应的值,这些关系由二维字符串数组 knowledge 表示,其中 knowledge[i] = [keyi, valuei] ,表示键 keyi 对应的值为 valuei 。你需要替换 所有 的括号对。当你替换一个括号对,且它包含的键为 ke

2021-03-29 22:26:38 1000

原创 还原排列的最少操作步数

原题指路添加链接描述题目描述给你一个偶数n​​​​​​ ,已知存在一个长度为 n 的排列 perm ,其中 perm[i] == i​(下标 从 0 开始 计数)。一步操作中,你将创建一个新数组 arr ,对于每个 i :如果 i % 2 == 0 ,那么 arr[i] = perm[i / 2]如果 i % 2 == 1 ,那么 arr[i] = perm[n / 2 + (i - 1) / 2]然后将 arr​​ 赋值​​给 perm 。要想使 perm 回到排列初始值,至少需要执行

2021-03-29 22:12:46 206

原创 字符串中不同整数的数目

原题指路字符串中不同整数的数目题目描述给你一个字符串 word ,该字符串由数字和小写英文字母组成。请你用空格替换每个不是数字的字符。例如,"a123bc34d8ef34" 将会变成 " 123 34 8 34" 。注意,剩下的这些整数为(相邻彼此至少有一个空格隔开):"123"、"34"、"8" 和 "34" 。返回对 word 完成替换后形成的 不同 整数的数目。只有当两个整数的 不含前导零 的十进制表示不同, 才认为这两个整数也不同。解题思路python里的切片和字典对这题来说简直就

2021-03-28 20:07:24 179

原创 积压订单中的订单总数

原题指路积压订单中的订单总数题目描述给你一个二维整数数组 orders ,其中每个 orders[i] = [pricei, amounti, orderTypei] 表示有 amounti 笔类型为 orderTypei 、价格为 pricei 的订单。订单类型 orderTypei 可以分为两种:0 表示这是一批采购订单 buy1 表示这是一批销售订单 sell注意,orders[i] 表示一批共计 amounti 笔的独立订单,这些订单的价格和类型相同。对于所有有效的 i ,由 or

2021-03-28 19:45:24 259

原创 设计一个验证系统

原题指路设计一个验证系统题目描述你需要设计一个包含验证码的验证系统。每一次验证中,用户会收到一个新的验证码,这个验证码在 currentTime 时刻之后 timeToLive 秒过期。如果验证码被更新了,那么它会在 currentTime (可能与之前的 currentTime 不同)时刻延长 timeToLive 秒。请你实现 AuthenticationManager 类:AuthenticationManager(int timeToLive) 构造 AuthenticationManag

2021-03-27 17:49:53 449

原创 最大升序子数组和

原题指路最大升序子数组和题目描述给你一个正整数组成的数组 nums ,返回 nums 中一个 升序 子数组的最大可能元素和。子数组是数组中的一个连续数字序列。已知子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,若对所有 i(l <= i < r),numsi < numsi+1 都成立,则称这一子数组为 升序 子数组。注意,大小为 1 的子数组也视作 升序 子数组。解题思路这道题用动态规划即可解决问题,在每次递增子数组结束时,用状态转移

2021-03-26 21:29:06 222

原创 仅执行一次字符串交换能否使两个字符串相等

原题指路仅执行一次字符串交换能否使两个字符串相等题目描述给你长度相等的两个字符串 s1 和 s2 。一次 字符串交换 操作的步骤如下:选出某个字符串中的两个下标(不必不同),并交换这两个下标所对应的字符。如果对 其中一个字符串 执行 最多一次字符串交换 就可以使两个字符串相等,返回 true ;否则,返回 false 。解题思路满足题目要求的情况只有以下两种:s1和s2完全相同;s1和s2只有两个对应位置的元素不同。所以循环遍历一次字符串进行判断即可。时间复杂度:O(n)O(n)O

2021-03-23 21:49:43 756

原创 字符串中第二大的数字

原题指路字符串中第二大的数字题目描述给你一个混合字符串 s ,请你返回 s 中 第二大 的数字,如果不存在第二大的数字,请你返回 -1 。混合字符串 由小写英文字母和数字组成。解题思路这题如果字符串处理的方式比较熟悉的话,做起来还挺容易的。说来也神奇,这处理字符串的几个函数有些还是我前几天刚学的,结果周赛里马上就用上了。首先,我们要将字符串中的字母过滤掉,然后再删除其中重复的数字,然后再进行排序,最后就可以直接找到第二大的元素啦~时间复杂度:O(nlog⁡n)O(n \log{n})O(

2021-03-22 19:46:11 920

原创 找出星型图的中点

原题指路找出星型图的中点题目描述有一个无向的 星型 图,由 n 个编号从 1 到 n 的节点组成。星型图有一个 中心 节点,并且恰有 n - 1 条边将中心节点与其他每个节点连接起来。给你一个二维整数数组 edges ,其中 edges[i] = [ui, vi] 表示在节点 ui 和 vi 之间存在一条边。请你找出并返回 edges 所表示星型图的中心节点。解题思路这道题有个十分关键的信息——只有中心点才会有n−1n-1n−1条与之关联的边,即整张图中只有一个点的度为n−1n-1n−1,且为

2021-03-16 20:59:34 195

原创 删除字符串中的所有相邻重复项

原题指路删除字符串中的所有相邻重复项题目描述给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。在 S 上反复执行重复项删除操作,直到无法继续删除。在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。解题思路没什么技巧,直接用栈就行了。时间复杂度:O(n)O(n)O(n)空间复杂度:O(n)O(n)O(n),最坏情况下,栈的深度为n−1n-1n−1。代码class Solution: def removeDuplicates(self

2021-03-09 21:42:34 165

原创 下一个更大元素 II

原题指路下一个更大元素 II题目描述给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素),输出每个元素的下一个更大元素。数字 x 的下一个更大的元素是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出 -1。解题思路emmmmmm首先吐槽一下本题的中文题干,看不懂什么意思的建议直接看英文题干。这道题用到的方法为单调栈+循环数组。单调栈:栈底到栈顶是单调的。这道题需要在遍历循环数组的同时维护一个单调递减栈:循环数组:

2021-03-07 21:44:33 91

原创 二维区域和检索

原题指路二维区域和检索题目描述给定一个二维矩阵,计算其子矩形范围内元素的总和,该子矩阵的左上角为 (row1, col1) ,右下角为 (row2, col2) 。解题思路虽然这道题变成了对二维数组求解,但和之前做的区域和检索本质上并没有区别。因为都可以对数组进行预处理,所以仍然可以采用前缀和的思路。不过这次可以采用二维前缀和。定义sum[i+1][j+1]=sum[i][j+1]+sum[i+1][j]−sum[i][j]+matrix[i][j]sum[i + 1][j + 1] = su

2021-03-05 21:25:06 146

原创 用栈实现队列

原题指路用栈实现队列题目描述请你仅使用两个栈实现先入先出队列。队列应当支持一般队列的支持的所有操作(push、pop、peek、empty):实现 MyQueue 类:void push(int x) 将元素 x 推到队列的末尾int pop() 从队列的开头移除并返回元素int peek() 返回队列开头的元素boolean empty() 如果队列为空,返回 true ;否则,返回 false说明:你只能使用标准的栈操作 —— 也就是只有 push to top, peek/p

2021-03-05 21:02:02 67

原创 俄罗斯套娃信封问题

原题指路俄罗斯套娃信封问题题目描述给定一些标记了宽度和高度的信封,宽度和高度以整数对形式 (w, h) 出现。当另一个信封的宽度和高度都比这个信封大的时候,这个信封就可以放进另一个信封里,如同俄罗斯套娃一样。请计算最多能有多少个信封能组成一组“俄罗斯套娃”信封(即可以把一个信封放到另一个信封里面)。说明:不允许旋转信封。解题思路困难题就直接参考一波官方题解……首先,在套娃前进行准备工作,对信封按照第一维www进行升序排列,先得到一个www的递增序列;其次,为了防止后面迭代过程中出错,

2021-03-04 21:11:35 127

原创 区域和检索

原题指路区域和检索题目描述给定一个整数数组 nums,求出数组从索引 i 到 j(i ≤ j)范围内元素的总和,包含 i、j 两点。实现 NumArray 类:NumArray(int[] nums) 使用数组 nums 初始化对象int sumRange(int i, int j) 返回数组 nums 从索引 i 到 j(i ≤ j)范围内元素的总和,包含 i、j 两点(也就是 sum(nums[i], nums[i + 1], ... , nums[j]))解题思路由于这道题存在预处

2021-03-03 22:24:11 201

原创 至少有 K 个重复字符的最长子串

原题指路至少有 K 个重复字符的最长子串题目描述给你一个字符串 s 和一个整数 k ,请你找出 s 中的最长子串, 要求该子串中的每一字符出现次数都不少于 k 。返回这一子串的长度。解题思路这道题有别于一般的“滑动窗口”的题目,因为这道题窗口的维护条件需要人为添加一项,即窗口中的字符种类数。虽然这看起来很复杂,但是由于这题的数据范围限制在小写字母集之内,所以可以直接枚举1-26种字母即可。移动边界时窗口需维护的变量有:窗口内的字符种类数tot;窗口内出现次数小于k次的字符的数量less

2021-02-27 21:16:16 337

原创 转置矩阵

** 原题指路 **转置矩阵题目简介给你一个二维整数数组 matrix, 返回 matrix 的 转置矩阵 。矩阵的 转置 是指将矩阵的主对角线翻转,交换矩阵的行索引与列索引。解题思路也没啥好方法,就直接建立一个二维数组,然后一个个替换。时间复杂度:O(mn)空间复杂度:O(mn)代码class Solution: def transpose(self, matrix: List[List[int]]) -> List[List[int]]: m,n=le

2021-02-25 21:18:06 212

原创 Visual Studio Code简单C/C++编译配置&中文编码问题解决方案

声明:本教程借鉴了网上诸多大神的教程,由于······确实借鉴太多了,以至于都忘了有些在哪找到的,所以就暂时不列举了(基本都是CSDN上的),不过,在这里我仍然要表达一下对各位前辈的感谢。本教程仅基于win10系统、VScode1.49.2版本以及gcc9.2.0版本MinGW编译器,如遇不兼容情况,请自行寻找其他教程进行解决。本教程中所提供的中文编码问题解决方案并非完美,若有其他需要或要求,可能导致乱码问题,届时请自行寻找其他教程。如本教程有谬误之处,欢迎各位前来指正!1、Visual Studi

2021-02-24 23:03:41 1976 1

原创 数据结构学习——图书管理系统

图书管理系统声明:本文采用C语言编写,实现功能有限,代码中有众多bug,输入文件和输出文件格式不统一,没有采用图形化设计,不喜勿喷 。1、系统要求(1)图书信息存储结构设计(书号、书名、类别、作者、出版社、总库存、已出借册数)(2)借阅信息存储结构设计(学号、书号,借阅日期、应还日期[假设借阅期限2个月])(3)图书管理(入库、出库)(4)查询书籍(根据书号、书名(模糊)、类别、作者)(5)查询借阅信息(根据学号,显示借阅信息)(6)借书(7)还书(若超期,则打印罚款金额,以每天两毛计费)

2021-02-24 22:48:27 5062

原创 翻转图像

原题指路翻转图像题目描述给定一个二进制矩阵 A,我们想先水平翻转图像,然后反转图像并返回结果。水平翻转图片就是将图片的每一行都进行翻转,即逆序。例如,水平翻转 [1, 1, 0] 的结果是 [0, 1, 1]。反转图片的意思是图片中的 0 全部被 1 替换, 1 全部被 0 替换。例如,反转 [0, 1, 1] 的结果是[1, 0, 0]。解题思路这题比较简单,双指针遍历数组就行了,不过太过暴力也不好,所以需要用点小技巧。我们发现,当前后指针所指元素不同时,翻转时不需要进行任何操作;而当前

2021-02-24 22:34:39 96

原创 爱生气的书店老板

原题指路爱生气的书店老板题目描述今天,书店老板有一家店打算试营业 customers.length 分钟。每分钟都有一些顾客(customers[i])会进入书店,所有这些顾客都会在那一分钟结束后离开。在某些时候,书店老板会生气。 如果书店老板在第 i 分钟生气,那么 grumpy[i] = 1,否则 grumpy[i] = 0。 当书店老板生气时,那一分钟的顾客就会不满意,不生气则他们是满意的。书店老板知道一个秘密技巧,能抑制自己的情绪,可以让自己连续 X 分钟不生气,但却只能使用一次。请你返

2021-02-24 00:56:09 64

原创 公平的糖果棒交换

原题指路公平的糖果棒交换题目描述爱丽丝和鲍勃有不同大小的糖果棒:A[i] 是爱丽丝拥有的第 i 根糖果棒的大小,B[j] 是鲍勃拥有的第 j 根糖果棒的大小。因为他们是朋友,所以他们想交换一根糖果棒,这样交换后,他们都有相同的糖果总量。(一个人拥有的糖果总量是他们拥有的糖果棒大小的总和。)返回一个整数数组 ans,其中 ans[0] 是爱丽丝必须交换的糖果棒的大小,ans[1] 是 Bob 必须交换的糖果棒的大小。如果有多个答案,你可以返回其中任何一个。保证答案存在。解题思路今天第一次用P

2021-02-01 23:28:00 100

原创 基于DPLL的SAT工具箱

一、SAT工具箱设计要求1、SAT问题介绍布尔表达式命题逻辑公式,也称为布尔表达式,由变量,运算符AND(连接,也用∧表示),OR(分离,∨), NOT (否定,¬)和括号构成。1布尔可满足问题通过对一个布尔表达式进行一种真值指派,从而使该表达式的值为真,则称该布尔表达式可满足。一个可满足性问题就是判定一个给定的合取范式的布尔公式是否是可满足的。SAT问题SAT的问题被证明是NP-Hard的问题。目前解决该问题的方法主要有完备的方法和不完备的方法两大类。完备的方法优点是保证能正确地

2021-01-31 17:31:27 1858 2

原创 最小体力消耗路径

原题指路最小体力消耗路径题目描述你准备参加一场远足活动。给你一个二维 rows x columns 的地图 heights ,其中 heights[row][col] 表示格子 (row, col) 的高度。一开始你在最左上角的格子 (0, 0) ,且你希望去最右下角的格子 (rows-1, columns-1) (注意下标从 0 开始编号)。你每次可以往 上,下,左,右 四个方向之一移动,你想要找到耗费 体力 最小的一条路径。一条路径耗费的 体力值 是路径上相邻格子之间 高度差绝对值 的 最大值

2021-01-29 21:23:25 166

原创 寻找数组的中心索引

原题指路寻找数组的中心索引题目描述给你一个整数数组 nums,请编写一个能够返回数组 “中心索引” 的方法。数组 中心索引 是数组的一个索引,其左侧所有元素相加的和等于右侧所有元素相加的和。如果数组不存在中心索引,返回 -1 。如果数组有多个中心索引,应该返回最靠近左边的那一个。注意:中心索引可能出现在数组的两端。解题思路1、首先求出数组长度,若长度为0,可直接返回-1,即找不到;2、接着调用STL库函数accumulate函数求出从数组第2个元素到数组最后一个元素的元素和,记为total

2021-01-28 19:37:42 230

原创 随机变量生成算法——通过Rayleigh变量(或均匀分布变量)转换为高斯随机变量

随机变量生成算法——通过Rayleigh变量(或均匀分布变量)转换为高斯随机变量算法介绍由随机过程的理论知两个相互独立的高斯随机变量的均方根是Rayleigh分布的随机变量。首先,由高斯随机变量的定义可得其概率密度为:此时,令即进行如下所示的的坐标变换(即极坐标变换):由该坐标变换可将原概率密度变换为:若设R是Rayleigh随机变量,Θ是(0,2pi)均匀分布随机变量。那么由如下关系式:最后可得两个相互独立的高斯随机变量的表达式为:此时称X为同相分量,Y为正交分量。~~

2020-10-03 19:53:42 2037

原创 随机变量生成算法——产生离散型随机变量样本值的方法

随机变量生成算法——产生离散型随机变量样本值的方法算法介绍设离散型随机变量X具有分布律现在来产生X的随机数:先产生伪随机数u,令由于所以X具有给定的分布律。下面将引用浙大版概统(第四版)中的例题为例1、计算过程2、C++代码实现#include<bits/stdc++.h>int main(){ float x[10001],y[10001],z[10001],u[10001]; x[0]=1; y[0]=2; z[0]=3;

2020-07-14 21:10:19 2944

原创 随机变量生成算法——逆变换法

逆变换法算法介绍即将一个不相关均匀分布的随机序列U映射到一个具有概率分布函数Fx(x)的不相关序列X。已知待产生的随机变量X的CDF为Fx(x),设定反解X得下面将以生成瑞利分布为例1、计算过程其pdfCDF为令其为U,最后,2、C++代码实现#include<bits/stdc++.h>int main(){ float x[10001],y[10001],z[10001],u[10001],re[10001]; x[0]=1;

2020-06-23 15:42:14 9162

原创 随机变量生成算法入门——Wichmann-Hill算法

Wichmann-Hill算法1、算法介绍为了得到长周期的随机数发生器,可将两个周期相差很小的波形序列相加,如定义3个随机数发生器,它们都是全周期的则它们合成输出等价的乘性发生器中a=16555425264690,m=2.7817*1013。2、C++代码实现include<bits/stdc++.h>int main(){ float x[10001],y[10001],z[10001],u[10001]; x[0]=1; y[0]=2;

2020-06-22 23:03:03 1239

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除