面试手撕代码经典题库
文章平均质量分 50
ershiyidian
知之者不如好之者,好之者不如乐之者~~~
展开
-
LC55.跳跃游戏---能否到达最后一个下标---到达尾部的最小步数---贪心算法
如果可以,返回。原创 2024-08-12 18:29:40 · 431 阅读 · 1 评论 -
链表中间节点---删除倒数第几个节点---相交链表---C++
【代码】链表中间节点---删除倒数第几个节点---相交链表---C++原创 2024-08-12 10:07:30 · 292 阅读 · 0 评论 -
滑动窗口最大值---双端队列---优先队列
给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值。想要找出当前窗口里面的,自然而然的想法就是,从中选出最大值,这样的复杂度是O(k*n)级别,复杂度有点高。首先滑动窗口滑过所有的元素必然要经历O(n)的时间,这没法调整,所以可以优化的方向在于,即想办法从O(k)优化到O(logk)或者直接优化到O(1)。使用!让窗口移动的过程,维护好队列里面的元素,做到都能马上知道当前窗口的最大值,由于想要做到的级别拿到最大值,那么必须是它的,也就是说我们需要维护一个用来保存队列中。原创 2024-06-14 08:51:34 · 221 阅读 · 0 评论 -
用栈实现队列---C++
请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(pushpoppeekempty):实现MyQueueint pop()int peek()truefalsesizeis empty。原创 2024-08-11 23:07:47 · 379 阅读 · 0 评论 -
用队列实现栈---C++实现
请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(myStack.empty();// 返回 False。的元素,queue2 作为入栈操作的。其中 queue1 用于存储。原创 2024-08-11 22:53:45 · 389 阅读 · 0 评论 -
LCR 041. 数据流中的移动平均值---移动窗口的平均值---队列
给定一个窗口大小和一个整数数据流,根据该滑动窗口的大小,计算滑动窗口里所有数字的平均值。实现sizenextsize// 返回 1.0 = 1 / 1// 返回 5.5 = (1 + 10) / 2// 返回 4.66667 = (1 + 10 + 3) / 3// 返回 6.0 = (10 + 3 + 5) / 3next104。原创 2024-08-11 12:02:58 · 412 阅读 · 0 评论 -
LC18.四数之和
给你一个由n个整数组成的数组nums,和一个目标值target。请你找出并返回满足下述全部条件且的四元组bcd你可以按返回答案。原创 2024-08-10 17:02:38 · 568 阅读 · 0 评论 -
计算素数质数
给定整数n,返回所有小于非负整数n的质数的数量。原创 2024-08-10 11:50:00 · 176 阅读 · 0 评论 -
链表---c++
请你删除链表中所有满足。给你一个链表的头节点。原创 2024-07-17 16:58:54 · 253 阅读 · 0 评论 -
1190. 反转每对括号间的子串---栈
给出一个字符串s(仅含有小写英文字母和括号)。请你按照从括号内到外的顺序,逐层反转每对匹配括号中的字符串,并返回最终的结果。注意,您的结果中包含任何括号。"dcba""iloveu"先反转子字符串 "love" ,然后反转整个字符串。原创 2024-08-10 09:56:28 · 124 阅读 · 0 评论 -
数组元素TOP1---哈希表
即找出数组中出现的值,若有多个出现次数相同的元素,一并输出。原创 2024-08-10 00:17:53 · 243 阅读 · 0 评论 -
有效的字母异位词---哈希表map
中每个字符出现的次数都相同,则称。,编写一个函数来判断。原创 2024-06-15 18:50:36 · 150 阅读 · 0 评论 -
LC349. 两个数组的交集---哈希集合
哈希集合解法给定两个数组nums1和nums2,返回它们的交集。输出结果中的每个元素一定是的。我们可以。原创 2024-07-07 11:51:05 · 259 阅读 · 0 评论 -
买卖股票的最佳时机系列---状态DP
给定一个数组prices,其中prices[i]是一支给定股票第i天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成笔交易。你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。输入:k = 2, prices = [2,4,1]输出:2解释:在第 1 天 (股票价格 = 2) 的时候买入,在第 2 天 (股票价格 = 4) 的时候卖出,这笔交易所能获得利润 = 4-2 = 2。给定一个数组prices,它的第i个元素prices[i]表示一支给定股票第i天的价格。你只能选择。原创 2024-06-24 10:34:13 · 599 阅读 · 0 评论 -
LC70. 爬楼梯---序列DP动态规划
是什么?原创 2024-07-11 09:17:07 · 197 阅读 · 0 评论 -
打家劫舍---序列DP
你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你,一夜之内能够偷窃到的最高金额。上述方法使用了数组存储结果。考虑到每间房屋的最高总金额只和该房屋的前两间房屋的最高总金额相关,因此可以使用,在每个时刻只需要存储。原创 2024-06-21 20:26:13 · 151 阅读 · 0 评论 -
不同路径 II---序列DP
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。。问总共有多少条不同的路径?原创 2024-06-21 19:26:05 · 131 阅读 · 0 评论 -
不同路径---序列DP
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能或者移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?原创 2024-06-21 17:11:12 · 190 阅读 · 0 评论 -
最小路径和---序列DP
给定一个包含非负整数的mxn网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。每次只能向下或者向右移动一步。原创 2024-06-21 19:54:17 · 183 阅读 · 0 评论 -
目标和---背包DP---0-1背包
给你一个整数数组nums和一个整数target。向数组中的每个整数前添加'+'或'-',然后串联起所有整数,可以构造一个例如,,可以在2之前添加'+',在1之前添加'-',然后串联起来得到表达式"+2-1"。返回可以通过上述方法构造的、运算结果等于target的不同的数目。思路1.背包DP。原创 2024-06-24 19:58:49 · 264 阅读 · 0 评论 -
最长回文子串---二维DP
时间复杂度:O(n2),其中 n 是字符串的长度。动态规划的状态总数为 O(n2),对于每个状态,我们需要转移的时间为 O(1)。空间复杂度:O(n2),即存储动态规划状态需要的空间。原创 2024-07-11 10:37:39 · 228 阅读 · 0 评论 -
最长公共子序列---LCS---DP
给定两个字符串text1和text2,返回这两个字符串的最长的长度。如果不存在,返回0。一个字符串的是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。例如,"ace"是"abcde"的子序列,但"aec"不是"abcde"的子序列。两个字符串的是这两个字符串所共同拥有的子序列。原创 2024-06-23 10:13:09 · 135 阅读 · 0 评论 -
最长递增子序列LIS---序列DP
给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。子序列是由数组派生而来的序列,数组中的元素而不改变其余元素的顺序。4最长递增子序列是 [2,3,7,101],因此长度为 4。原创 2024-06-22 12:41:13 · 165 阅读 · 0 评论 -
最长递增子序列LIS的个数 序列DP
给定一个未排序的整数数组nums返回最长递增子序列的个数。这个数列必须是递增的。输入: [1,3,5,4,7]输出: 2解释: 有两个最长递增子序列,分别是 [1, 3, 4, 7] 和[1, 3, 5, 7]。原创 2024-06-22 17:40:58 · 329 阅读 · 0 评论 -
零钱兑换---背包DP---完全背包
给你一个整数数组coins,表示不同面额的硬币;以及一个整数amount,表示总金额。计算并返回可以凑成总金额所需的。如果没有任何一种硬币组合能组成总金额,返回-1。你可以认为每种硬币的数量是无限的。输入:coins = [1, 2, 5], amount = 11输出:3解释:11 = 5 + 5 + 1。原创 2024-06-24 20:36:40 · 135 阅读 · 0 评论 -
字符串压缩---模拟
字符串压缩。利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串会变为a2b1c5a3。若“压缩”后的字符串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文字母(a至z)。:"abbccd":"abbccd":"abbccd"压缩后为"a1b2c2d1",比原字符串长度更长。原创 2024-08-07 12:01:02 · 332 阅读 · 0 评论 -
LC3. 无重复字符的最长子串---滑动窗口不定长
给定一个字符串s,请你找出其中不含有重复字符的的长度。原创 2024-06-20 15:46:57 · 366 阅读 · 0 评论 -
商品的排列顺序---全排列
某店铺将用于组成套餐的商品记作字符串goods,其中goods[i]表示对应商品。请返回该套餐内所含商品的。返回结果,但不能含有重复的元素。原创 2024-08-06 16:14:03 · 198 阅读 · 0 评论 -
旋转矩阵---三种方法
矩阵表示的图像,其中每个像素的大小为 4 字节。请你设计一种算法,将图像旋转 90 度。不占用额外内存空间能否做到?原创 2024-08-06 15:41:25 · 583 阅读 · 0 评论 -
LC468.验证IP地址
给定一个字符串queryIP。如果是有效的 IPv4 地址,返回"IPv4";如果是有效的 IPv6 地址,返回"IPv6";如果不是上述类型的 IP 地址,返回"Neither"。是形式的IP地址。其中且xi前导零。例如:为有效IPv4地址,为无效IPv4地址;为无效IPv4地址。是一个格式为'a''f''A''F'xi例如和是有效的 IPv6 地址,而和是无效的 IPv6 地址。"IPv4"有效的 IPv4 地址,返回 "IPv4""IPv6"有效的 IPv6 地址,返回 "IPv6"原创 2024-08-06 14:00:51 · 239 阅读 · 0 评论 -
最大公约数---最小公倍数---1到N的最小公倍数---C++实现
第二步:以较大的数减较小的数,接着把所得的差与较小的数比较,并以大数减小数。第一步:任意给定两个正整数;若不是则执行第二步。若 r 是 a ÷ b 的余数,且r不为0, 则gcd(a,b) = gcd(b,r)则第一步中约掉的若干个2的积与第二步中等数的乘积就是所求的最大公约数。注:gcd表示最大公因数,gcd(a,b)表示a、b两数的最大公因数。求出最大公因数后,之间用a*b/gcd(a,b)即可。互换:置 a←b,b←r,并返回第一步。令r为a/b所得余数(0<=r)若 r= 0,算法结束;原创 2024-08-06 11:20:48 · 226 阅读 · 0 评论