- 博客(386)
- 收藏
- 关注
原创 在排序数组中查找元素的第一个和最后一个位置
给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。输入:nums = [5,7,7,8,8,10], target = 8。输入:nums = [5,7,7,8,8,10], target = 6。你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。如果数组中不存在目标值 target,返回 [-1, -1]。输入:nums = [], target = 0。输出:[-1,-1]输出:[-1,-1]
2024-07-26 10:31:37 160
原创 字符串s构造前缀树,并判断p是否属于s的子串
输入:vec = {“hello”, “world”, “hey”, “hi”} p = “hell”根据几个单词,构造一个前缀树,再给定一个单词p,判断p是否属于s的前缀。
2024-07-11 14:42:47 184
原创 字符串匹配
给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。输入:haystack = “leetcode”, needle = “leeto”输入:haystack = “sadbutsad”, needle = “sad”解释:“leeto” 没有在 “leetcode” 中出现,所以返回 -1。解释:“sad” 在下标 0 和 6 处匹配。第一个匹配项的下标是 0 ,所以返回 0。时间O(m + n)
2024-07-11 11:00:55 186
原创 罗马数字相互转换
通常情况下,罗马数字中小的数字在大的数字的右边。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4。同样地,数字 9 表示为 IX。例如, 罗马数字 2 写做 II ,即为两个并列的 1。C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。罗马转数字,遍历字符串,分类讨论,直接写。
2024-07-10 10:38:48 394
原创 腐烂的橘子md
1、BFS grid是一个二维数组,维护一个装坏橘子队列,和好橘子的sum,统计坏橘子的位置,存到点队列中。一分钟刷新一次队列,队列元素四周查看一边,更新四周,然后pop掉这个元素,等这一轮刷新完事之后,新的队列元素也在此过程中更新的出来,再更新时间再更新坏橘子的队列,等好橘子都没了的时候返回所求时间ret。等到队列没有坏橘子时,跳出循环,返回-1。3、 for(auto & dir:direction) // 是个循环dir和direction 是一样的变量,且是其中之一。如果不可能,返回 -1。
2024-07-10 09:22:14 313
原创 编辑距离_两个字符串a,b,把a变成b 最小操作次数
在你的代码中,你使用了变量 m 和 n 来定义数组 dp 的大小,这是不被允许的,因此编译器会报错。给你两个单词 word1 和 word2, 请返回将 word1 转换成 word2 所使用的最少操作数。inention -> enention (将 ‘i’ 替换为 ‘e’)enention -> exention (将 ‘n’ 替换为 ‘x’)exention -> exection (将 ‘n’ 替换为 ‘c’)horse -> rorse (将 ‘h’ 替换为 ‘r’)
2024-07-09 16:29:31 361
原创 分糖果 2 (循环递增分)& 3 (根据得分 分)
然后,我们再回到队伍的起点,给第一个小朋友 n + 1 颗糖果,第二个小朋友 n + 2 颗,依此类推,直到给最后一个小朋友 2 * n 颗糖果。第四次,ans[3] += 1(因为此时只剩下 1 颗糖果),最终数组变为 [1,2,3,1]。n 个孩子站成一排。第一次,ans[0] += 1,数组变为 [1,0,0,0]。第二次,ans[1] += 2,数组变为 [1,2,0,0]。第三次,ans[2] += 3,数组变为 [1,2,3,0]。第二次,ans[1] += 2,数组变为 [1,2,0]。
2024-07-09 12:40:35 713
原创 加油站_循环到达
你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你无法返回 2 号加油站,因为返程需要消耗 4 升汽油,但是你的油箱只有 3 升汽油。输入: gas = [1,2,3,4,5], cost = [3,4,5,1,2]开往 3 号加油站,你需要消耗 5 升汽油,正好足够你返回到 3 号加油站。开往 0 号加油站,此时油箱有 4 - 3 + 2 = 3 升汽油。开往 1 号加油站,此时油箱有 3 - 3 + 3 = 3 升汽油。
2024-07-09 10:58:19 732
原创 除自身以外数组的乘积_前缀和
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。两次遍历,把下三角,和上三角的前缀和,和后缀和搞一起就行了。请 不要使用除法,且在 O(n) 时间复杂度内完成此题。输入: nums = [-1,1,0,-3,3]输入: nums = [1,2,3,4]输出: [24,12,8,6]输出: [0,0,9,0,0]
2024-07-09 09:51:15 253
原创 打家劫舍2(循环) & 3(树根)
动态规划,回溯递归,下边解法是结合动态规划的回溯递归,定义树节点所带的钱,用一个unordered_map把树节点和钱绑定在一起,递归看的层次就是关注在此节点上,孩子节点只要关注能带回来多少钱,而能带回来的钱,又是通过递归函数实现,防止递归出现的没必要的多次遍历,就初始化都是0,如果遍历过了,就携带此节点的钱,然后直接返回这个节点的钱就好了。解释: 你不能先偷窃 1 号房屋(金额 = 2),然后偷窃 3 号房屋(金额 = 2), 因为他们是相邻的。输入: [3,2,3,null,3,null,1]
2024-07-08 17:36:01 623
原创 华为笔试题
S 长度\u003C=100,L 长度\u003C=500,000。(例如,S=”ace”是 L=”abcde”的一个子序列且有效字符是 a、c、e,S 长度\u003C=100,L 长度\u003C=500,000。给定一个正整数n,如果能够分解为m(m > 1)个连续正整数之和,且k = { n - [m * (m -1) / 2] } / m。S 中的每个字符在 L 中都能找到(可以不连续),输出,21=10+11,是最短的分解序列。先输入 S,再输入 L,每个字符串占一行。输入输出示例仅供调试。
2024-07-08 16:20:52 550
原创 O(1) 时间插入、删除和获取随机元素
实现RandomizedSet 类:RandomizedSet() 初始化 RandomizedSet 对象bool insert(int val) 当元素 val 不存在时,向集合中插入该项,并返回 true;否则,返回 false。bool remove(int val) 当元素 val 存在时,从集合中移除该项,并返回 true;否则,返回 false。int getRandom() 随机返回现有集合中的一项(测试用例保证调用此方法时集合中至少存在一个元素)。
2024-07-08 14:39:24 878
原创 论文引用h指数
根据维基百科上 h 指数的定义:h 代表“高引用次数” ,一名科研人员的 h 指数 是指他(她)至少发表了 h 篇论文,并且 至少 有 h 篇论文被引用次数大于等于 h。如果 h 有多种可能的值,h 指数 是其中最大的那个。给你一个整数数组 citations ,其中 citations[i] 表示研究者的第 i 篇论文被引用的次数。1、直接把每篇论文的引用次数展开,构成一行,之后竖着统计检查,从左往右,更新h。排好序,又从大到小遍历,h++保证条件一,条件二:h篇中每篇至少引用h次。
2024-07-08 10:47:08 324
原创 跳跃游戏1&2
解释:无论怎样,总会到达下标为 3 的位置。解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。返回到达 nums[n - 1] 的最小跳跃次数。生成的测试用例可以到达 nums[n - 1]。从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。输入: nums = [2,3,1,1,4]输入: nums = [2,3,0,1,4]输入:nums = [2,3,1,1,4]输入:nums = [3,2,1,0,4]
2024-07-05 22:41:27 436
原创 按摩师_接预约(打家劫舍1)
解释: 选择 1 号预约、 3 号预约、 5 号预约和 8 号预约,总时长 = 2 + 4 + 3 + 3 = 12。dp, 找状态转移方程:dp[i] = max(dp[i - 1], dp[i - 2] + nums[i])解释: 选择 1 号预约、 3 号预约和 5 号预约,总时长 = 2 + 9 + 1 = 12。解释: 选择 1 号预约和 3 号预约,总时长 = 1 + 3 = 4。输入: [2,1,4,5,3,1,1,3]输入: [2,7,9,3,1]输入: [1,2,3,1]
2024-07-05 20:27:53 354
原创 面试经典 150 题
思路二:发现规律:先把整个数组逆置,之后把前k个元素逆置,之后把后边n- k个元素逆置。给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。输入: nums = [1,2,3,4,5,6,7], k = 3。思路一:使用辅助数组,时间复杂度O(N),空间复杂度O(N)向右轮转 1 步: [7,1,2,3,4,5,6]向右轮转 2 步: [6,7,1,2,3,4,5]向右轮转 3 步: [5,6,7,1,2,3,4]输出: [5,6,7,1,2,3,4]
2024-07-05 19:48:30 577
原创 颜色分类给定一个包含红色、白色和蓝色
给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums ,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。必须在不使用库内置的 sort 函数的情况下解决这个问题。
2024-07-05 12:01:48 310
原创 柠檬微趣笔试题
匹配应该覆盖到整个输入的字符串(而不是局部的),测试用例中不会出现超出匹配字符范围之外的字符,也不会出现非法的模式字符串。输入的第一行为需要检测匹配的用例数,接下来的每一行包括两个字符串,前一个字符串为待匹配的字符串,后一个字符串为模式字符串,实现简单的正则表达式匹配,本题中模式字符串所包含的字符的范围为字母、“.”、“*”、“?“*” 与模式字符串前一个字符组成一组,匹配零个或多个前面的字符;” 与模式字符串前一个字符组成一组,匹配一个或多个前面的字符;
2024-06-20 08:20:11 876
原创 24面试记录002
Python 的协程基于事件循环(Event Loop)的机制,事件循环负责调度并发任务的执行,而协程则通过 async/await 实现了在任务间的挂起和恢复。为了高效管理对象的资源,c++增加一种语言特性,把一个对象B变成右值引用类型,结合移动构造函数和移动赋值运算符,把对象B的资源(内存、文件句柄等)转移到另外一个对象A。总的来说,Python 的协程通过生成器和 async/await 关键字实现了在单线程内的并发执行,利用事件循环来调度任务的执行,从而实现了高效的异步操作和并发编程。
2024-06-18 10:52:14 597
原创 删除有重复数组的重复项1-2
给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。更改数组 nums ,使 nums 的前 k 个元素包含唯一元素,并按照它们最初在 nums 中出现的顺序排列。给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使得出现次数超过两次的元素只出现两次 ,返回删除后数组的新长度。因为题目二允许最多出现2次,所以可以在相等的情况下也存在拷贝的情况,所以写if(cur==nums[k])重复元素,原地,一次,二次。
2024-06-17 17:31:30 415
原创 88. 合并两个有序数组
为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。1.1 调用库函数std::merge(nums1.begin(),nums1.begin()+m,nums2.begin(),nums2.begin()+n,res.begin())输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3。合并结果是 [1,2,2,3,5,6] ,其中斜体加粗标注的为 nums1 中的元素。
2024-06-17 12:30:20 368
原创 判断子序列二刷
字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。你可以认为 s 和 t 中仅包含英文小写字母。字符串 t 可能会很长(长度 ~= 500,000),而 s 是个短字符串(长度 <=100)。著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。给定字符串 s 和 t ,判断 s 是否为 t 的子序列。来源:力扣(LeetCode)
2024-05-24 10:10:15 236
原创 健康码识别OCR
安装百度深度学习框架paddlepaddle飞桨# cpu 版本python3 -m pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple
2022-04-18 22:32:14 2463 1
原创 jupyter安装使用
1.环境windows首先安装python环境在命令行窗口中输入where python 可以看到python的路径输入: python --version可以看到当前的python版本在带有C:\Python27\Scripts>的路径下有pip可执行程序的命令。windows下的dir命令显示当前文件夹下的文件。和ls功能类似2. 安装在Python27\Scripts\路径下执行pip install jupyter 安装下载Anaconda参考3. 使用...
2022-04-18 14:30:16 495
原创 01_李宏毅机器学习
机器学习1. 分类回归分类产生结构化的东西:structured learning 文章凑字数柳神,辰东所著东方玄幻小说《完美世界》《圣墟》中的重要人物,无上仙王巨头,风华绝代,实力通天。号称祖祭灵,功参造化,一身战力震古烁今,曾只身杀入异域,九进九出,杀得异域不朽之王闻风丧胆。于一个雷电交加的夜晚,携万道雷劫降临石村,后成为石村的祭灵。常以一棵柳树的形态扎根石村,偶尔显化人身,神秘莫测,性别不明 [1] 。《圣墟》结局确认性别为女。石昊对她有特殊的感情,自少年时开始,石昊便一直在追寻着柳
2022-04-13 20:51:10 642
原创 10_11_吴恩达_大量数据
1. 随机梯度下降1.1 批量随机梯度下降batch1.2 随机梯度下降1.3 mini_batch梯度下降2. 在线学习有一个连续的数据流3.map_reduce当数据集可以表示成求和的形式时,就可以把任务分到不同的机器上完成。并行化18.照片OCR识别图片中的文字,机器学习流水线:文字检测->字符分割->字母识别模块18.2 滑动窗口检测器文字检测字符分割18.3 获取大量数据和人工数据从零开始制造数据原始样本中添加失真18.4 上限分析...
2022-04-13 17:41:08 127
原创 git常见命令需求
0,基本命令git add . # 从工作区添加到暂存区git commit -m "信息" # 从暂存区移动到本地库git push origin master # 更新到远程库git clone xxxx1. 删除本地库mastertemp在master分支上执行:git branch -d temp # 如果未合并,就使用-D2. 使用远程库更新本地库在当前分支master下git fetch origin master:tempgit diff tempg
2022-04-13 11:01:56 308
原创 09_推荐系统_吴恩达
1、问题电影推荐,根据评分,1.1 基于内容的推荐根据多个观影人对电影的评分,评分中有电影的特征信息,然后去学习参数,1.2 协同过滤根据多个观影人说出自己的喜好,(类似给出参数),去学习电影的特征,然后再去做推荐实施:首先随机给出参数,去学习特征x,然后根据特征使用1.1去学习参数,再回头使用新学到的参数再学习特征,如此迭代下去。1.3 低秩矩阵分解1.4 均值归一化当一个新用户对所有电影都没有打分的时候,如果使用协同过滤,这个新用户对所有电影的评分都是0,做不到推荐其他的电影,所以对之
2022-04-12 11:46:41 890
原创 源码安装ganglia
安装gangliasudo -E apt-get -yq --no-install-suggests --no-install-recommends $(travis_apt_get_options) install libapr1-dev libaprutil1-dev libconfuse-dev libexpat1-dev libpcre3-dev libssl-dev librrd-dev libperl-dev libtool m4 gperf zlib1g-dev pkg-config$
2022-03-20 20:40:35 917
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人