面试
文章平均质量分 51
来路与归途
来路慢慢,情不知所起;
归途遥远,眨眼便是过去。
展开
-
可怜的小猪
有buckets桶液体,其中含有毒药,其余装的都是水。它们从外观看起来都一样。为了弄清楚哪只水桶含有毒药,你可以喂一些猪喝,通过观察猪是否会死进行判断。不幸的是,你只有分钟时间来确定哪桶液体是有毒的。给你桶的数目buckets和,返回在规定时间内判断哪个桶有毒所需的猪数。原创 2024-01-08 15:33:13 · 390 阅读 · 0 评论 -
最长回文子串
给你一个字符串s,找到s中最长的回文子串。如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。"bab""aba" 同样是符合题意的答案。原创 2023-11-02 20:55:15 · 140 阅读 · 0 评论 -
图中所有节点到尾节点路径
1.从起始节点,以递归的方式逐渐查找子节点,记录走过的路径,直到走到尾节点后,生成的路径就是从起始节点到尾节点所有的可能路径2.原创 2022-04-07 17:07:41 · 638 阅读 · 1 评论 -
二分查找——递归
二分查找又称折半查找,是对一个有序的列表通过按中间元素切分搜索空间进行快速查找的,也可以通过递归方法实现,题目1给定一个整数数组ribbons和一个整数k,数组每项ribbons[i]表示第i条绳子的长度。对于每条绳子,你可以将任意切割成一系列长度为正整数的部分,或者选择不进行切割。你的任务是最终得到 k 条完全一样的绳子,他们的长度均为相同的正整数。如果绳子切割后有剩余,你可以直接舍弃掉多余的部分。对于这 k 根绳子,返回你能得到的绳子最大长度;如果你无法得到 k 根相同长度的绳子,返回 0原创 2021-11-18 16:50:40 · 2205 阅读 · 0 评论 -
动态规划求解 剪绳子问题 20211118
给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]...k[m-1] 。请问 k[0]*k[1]*...*k[m-1] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。示例 1:输入: 2输出: 1解释: 2 = 1 + 1, 1 × 1 = 1示例2:输入: 10输出: 36解释: 10 = 3 + 3 + 4, 3 ×..原创 2021-11-18 15:27:17 · 204 阅读 · 0 评论 -
柱状图中最大的矩形
给定n个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。示例 1:输入:heights = [2,1,5,6,2,3]输出:10解释:最大的矩形为图中红色区域,面积为 10示例 2:输入: heights = [2,4]输出: 4解题思路:首先,要想找到第 i 位置最大面积是什么?是以i 为中心,向左找第一个小于 heights[i] 的位置 left_i;向右找第一个小于于...转载 2021-11-17 20:35:27 · 439 阅读 · 0 评论 -
LeetCode 42 接雨水
给定n个非负整数表示每个宽度为1的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。示例 1:输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]输出:6解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。示例 2:输入:height = [4,2,0,3,2,5]输出:9解题思路1、单调栈详见:牛客 小米校招 计算题 单调...原创 2021-11-17 09:49:17 · 87 阅读 · 0 评论 -
N皇后问题
n皇后问题 研究的是如何将 n个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。给你一个整数 n ,返回所有不同的n皇后问题 的解决方案。每一种解法包含一个不同的n 皇后问题 的棋子放置方案,该方案中 'Q' 和 '.' 分别代表了皇后和空位。示例 1:输入:n = 4输出:[[".Q..","...Q","Q...","..Q."],["..Q.","Q...","...Q",".Q.."]]解释:如上图所示,4 皇后问题存在两个不同的解法。示例 2:...原创 2021-11-17 11:52:58 · 296 阅读 · 0 评论 -
路径样式化输出
题目大意:有n条linux系统的文件夹或者文件路径信息,要求按照字典升序(大小写敏感)整理出树状目录结果,不同层次目录相差2个空格的缩进。同一目录下保证文件夹不重名,以‘/’结尾为文件夹路径,否则为文件路径。输入:第一个输入:路径信息条数num接下来num行为路径信息信息输出:按字典升序输出树状目录样例1 样例2 【输入】:5usr/local/lib64GAMESusr/DRIVERShomevar/log/...原创 2021-09-23 19:01:08 · 87 阅读 · 0 评论 -
2020-11-20
题目描述给定n个非负整数表示每个宽度为1的柱子的高度题,计算按此排列的柱子,下雨之后能接多少雨水。输入描述:逗号分隔的整数,表示每根柱子的高度。柱子数n<=1000000,每根柱子的高度不大于100000输出描述:雨水量(高度和)输入 输出 0,1,0,2,1,0,1,3,2,1,2,1 6 思路1:由底层逐渐向上递归统计每层可接雨水的量,每层统计方式:设置起始/结束标记位,中间的面积即为该区域可接雨水的量,循环遍历;并将柱子高度减1,继...原创 2020-11-20 15:53:37 · 85 阅读 · 0 评论 -
四则运算
24点运算——华为题目描述计算24点是一种扑克牌益智游戏,随机抽出4张扑克牌,通过加(+),减(-),乘(*),除(/)四种运算法则计算得到整数24,本问题中,扑克牌通过如下字符或者字符串表示,其中,小写joker表示小王,大写JOKER表示大王:345678910JQKA2jokerJOKER本程序要求实现:输入4张牌,输出一个算式,算式的结果为24点。详细说明:1.运算只考虑加减乘除运算,没有阶乘等特殊运算...原创 2020-11-13 23:43:56 · 519 阅读 · 0 评论 -
递归生成表达式
n=4result=[]def fun(count,n,string): l,r=count if r==n: result.append(string) return True else: if l>r: if l<n: fun([l+1,r],n,string+'(') fun([l, r + 1], n, string + ')'...原创 2020-11-13 20:35:55 · 189 阅读 · 0 评论 -
合唱队-华为
题目描述计算最少出列多少位同学,使得剩下的同学排成合唱队形说明:N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形。合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2…,K,他们的身高分别为T1,T2,…,TK,则他们的身高满足存在i(1<=i<=K)使得T1<T2<......<Ti-1<Ti>Ti+1>......>TK。你的任务是,已知所有N位同学的身高,计算最少需要几位同学...原创 2020-11-11 15:12:10 · 99 阅读 · 0 评论 -
合唱团——网易
题目描述有 n 个学生站成一排,每个学生有一个能力值,牛牛想从这 n 个学生中按照顺序选取 k 名学生,要求相邻两个学生的位置编号的差不超过 d,使得这 k 个学生的能力值的乘积最大,你能返回最大的乘积吗?输入描述:每个输入包含 1 个测试用例。每个测试数据的第一行包含一个整数 n (1 <= n <= 50),表示学生的个数,接下来的一行,包含 n 个整数,按顺序表示每个学生的能力值 ai(-50 <= ai <= 50)。接下来的一行包含两个整数,k 和 d (1原创 2020-11-06 22:59:17 · 179 阅读 · 0 评论 -
股票交易日——美团
题目描述在股市的交易日中,假设最多可进行两次买卖(即买和卖的次数均小于等于2),规则是必须一笔成交后进行另一笔(即买-卖-买-卖的顺序进行)。给出一天中的股票变化序列,请写一个程序计算一天可以获得的最大收益。请采用实践复杂度低的方法实现。给定价格序列prices及它的长度n,请返回最大收益。保证长度小于等于500。测试样例:[10,22,5,75,65,80],6返回:87思路1:动态规划:将股票价格序列,分为两部分,当前划分位置的最大收益=前一个子序列的最大收益+后一个子序原创 2020-11-05 11:54:36 · 247 阅读 · 1 评论 -
矩阵最短路径
arr=[[1,1,1],[5,1,1],[1,1,1],[1,5,7],[1,1,1]]m,n=5,3weight=[[float("inf")]*n for _ in range(m)]for i in range(m): for j in range(n): if i==0 and j==0: weight[i][j]=arr[i][j] else: cur_min=float("inf") .原创 2020-11-03 16:57:05 · 2269 阅读 · 0 评论 -
地下迷宫——滴滴
题目描述小青蛙有一天不小心落入了一个地下迷宫,小青蛙希望用自己仅剩的体力值P跳出这个地下迷宫。为了让问题简单,假设这是一个n*m的格子迷宫,迷宫每个位置为0或者1,0代表这个位置有障碍物,小青蛙达到不了这个位置;1代表小青蛙可以达到的位置。小青蛙初始在(0,0)位置,地下迷宫的出口在(0,m-1)(保证这两个位置都是1,并且保证一定有起点到终点可达的路径),小青蛙在迷宫中水平移动一个单位距离需要消耗1点体力值,向上爬一个单位距离需要消耗3个单位的体力值,向下移动不消耗体力值,当小青蛙的体力值等于0的时候原创 2020-11-03 16:36:14 · 351 阅读 · 0 评论 -
地鼠逃跑计划
题目描述有一只地鼠不小心跑进了一个m*n的矩形田地里,假设地鼠在这块田地的初始位置为(x,y),并且每次只能向相邻的上下左右四个方向移动一步,那么在最多移动K次的情况下,有多少条路径可以逃出这片田地(一旦出去田地的边界就不能再往回走)?下面是样例示意图:输入描述:输入数据包括五个参数:m,n,x,y,K其中m和n的范围均为是[1,10],K的范围是[0,10]。0<=x<m,0<=y<n。输出描述:输出成功逃跑的路径数量。示例1输入 .原创 2020-10-22 22:29:58 · 397 阅读 · 0 评论 -
美团编程——病毒传播
题目描述给出一个图G(V,E),图上有n个点,m条边,所有的边都是无向边。最开始,也就是第0天的时候,这n个点中有一个点v感染了病毒,之后的每一天,凡是感染病毒的点都会向它的邻居点传播病毒。经过了t天之后,得到了感染病毒的点集S。要求找出第0天感染病毒的点v。如果v有很多不同的答案,把它们都找出来。输入描述:输出描述:示例 输入 输出 4 3 3 2 1 2 1 4 3 2 4 2 1 4 说明第0天,第..原创 2020-10-12 00:44:05 · 346 阅读 · 0 评论 -
美团编程——重要节点
题目描述输入描述:输出描述:示例1输入 输出 4 32 13 11 4 2 样例解释:重要节点是1,4。 代码:from queue import Queuen, m = [int(x) for x in input().split()]from_v = [[] for _ in range(n)]to_v = [[] for _ in range(n)]vers = [[] fo.原创 2020-10-10 23:13:45 · 242 阅读 · 0 评论 -
公交车-最短路径
最短路径法: 从开始节点出发标记能到达站点,再从可以到达的站点进行遍历,标记从该节点出发可到达的站点,直到终点。原创 2020-09-29 17:27:21 · 299 阅读 · 1 评论 -
公约数
题目描述输入描述:输出描述:解题思路动态规划代码1:import mathn,k,a,b=[int(x) for x in input().split()]data=[int(x) for x in input().split()]weights=[[[0]*k for j in range(a+1)] for i in range(n)]for i in range(n): cur_gcd=math.gcd(a,data[i]) wei..原创 2020-09-29 00:09:46 · 242 阅读 · 0 评论 -
被7整除
题目描述小萌非常喜欢能被7整除的数字,比如7,21,121996,等等。有一天他得到了n个正整数,她想用这些数制造出更多的能够被7整除的数。于是她从这n个数中选出两个数,然后将一个数写在另一个数的前面,以此得到一个新的数。按这种方法她一共可以得到个数,她想知道在这些数中,有多少个是能被7整除的。输入描述:第一行包含一个整数n。2 ≤n≤105第二行包含n个正整数ai。1 ≤ai≤109输出描述:输出对应的答案。输入 输出 3127 1996 12 .原创 2020-09-24 17:14:21 · 1198 阅读 · 0 评论 -
字符串距离
题目描述给出两个相同长度的由字符 a 和 b 构成的字符串,定义它们的距离为对应位置不同的字符 的数量。如串”aab”与串”aba”的距离为 2;串”ba”与串”aa”的距离为 1;串”baa”和串”baa”的 距离为 0。下面给出两个字符串 S 与 T,其中 S 的长度不小于 T 的长度。我们用|S|代表 S 的 长度,|T|代表 T 的长度,那么在 S 中一共有|S|-|T|+1 个与 T 长度相同的子串,现在你需要计 算 T 串与这些|S|-|T|+1 个子串的距离的和。注:T和S的上限不是1原创 2020-09-24 11:24:05 · 864 阅读 · 0 评论 -
n个花园最少多少天完成种花
题目描述公园里有N个花园,初始时每个花园里都没有种花,园丁将花园从1到N编号并计划在编号为i的花园里恰好种A_i朵花,他每天会选择一个区间[L,R](1≤L≤R≤N)并在编号为L到R的花园里各种一朵花,那么园丁至少要花多少天才能完成计划?输入描述:第一行包含一个整数N,1≤N≤10^5。第二行包含N个空格隔开的整数A_1到A_N,0≤A_i≤10^4。输出描述:输出完成计划所需的最少天数。输入 输出 54 1 8 2 5 14原创 2020-09-21 00:40:42 · 215 阅读 · 1 评论 -
外卖满减
题目描述你打开了美了么外卖,选择了一家店,你手里有一张满X元减10元的券,店里总共有n种菜,第i种菜一份需要A_i元,因为你不想吃太多份同一种菜,所以每种菜你最多只能点一份,现在问你最少需要选择多少元的商品才能使用这张券。输入描述:第一行两个正整数n和X,分别表示菜品数量和券的最低使用价格。(1≤n≤100, 1≤X≤10000) 接下来一行n个整数,第i个整数表示第i种菜品的价格。(1≤A_i≤100)输出描述:一个数,表示最少需要选择多少元的菜才能使用这张满X元减10元的券,保证原创 2020-09-16 21:35:42 · 157 阅读 · 0 评论 -
序列操作
题目描述有一天你得到了一个长度为 n 的序列,序列中的元素分别是 1,2,3,...,n。接下来你想对这个序 列进行一些操作。每一次操作你会选择一个数然后将它从序列中原来的位置取出并放在序列 的最前面。你想知道经过一系列操作后这个序列长什么样。输入描述:第一行包含两个整数????, ????,分别表示序列的长度和操作的个数。1 ≤ ????, ???? ≤ 105接下来????行每行包含一个整数????????,表示你要把????????放到序列的最前面。1 ≤ ???????? ≤ ???原创 2020-09-15 21:04:25 · 971 阅读 · 0 评论 -
华为面试
一面顺时针矩阵访问https://blog.csdn.net/qq_42233538/article/details/108480778二面思路:1.生成最终字符串的列表,将列表中尾部相同的子字符串去掉,生成一个只有只包含最终字符的列表;删除列表中所有尾部子字符串(例“abc”是“dabc”的子字符串)——分向后查找、向前查找两步;2.生成索引、编码后的字符串代码1words=['me','ti','stime','bell','time']start_s='.原创 2020-09-14 23:36:01 · 130 阅读 · 0 评论 -
拼凑面额
题目描述给你六种面额1、5、10、20、50、100元的纸币,假设每种币值的数量都足够多,编写程序求组成N元(N为0-10000的非负整数)的不同组合的个数。输入描述:输入为一个数字N,即需要拼凑的面额输出描述:输出也是一个数字,为组成N的组合个数。代码def change(amount, coins): dp = [0] * (amount + 1) dp[0] = 1 for c in coins: for j in range(原创 2020-09-11 12:08:49 · 162 阅读 · 0 评论 -
顺时针矩阵访问
题目描述由1-9数字组成的m*m的顺时针回旋矩阵,如下图所示,问题1:输入m,x,y (m为回旋矩阵的大小,x,y为矩阵输出元素的行,列);输出m*m回旋矩阵x行,y列的元素代码m,n=5,5arr=[[0 for i in range(m)] for j in range(n)]def fun(c_d,left, right, top, bottom): if left<right and top<bottom: for i in..原创 2020-09-09 01:25:23 · 182 阅读 · 0 评论 -
2020-09-06
题目描述给你一个01字符串,定义答案=该串中最长的连续1的长度,现在你有至多K次机会,每次机会可以将串中的某个0改成1,现在问最大的可能答案输入描述:输入第一行两个整数N,K,表示字符串长度和机会次数 ( 1 <= N <= 300000, 0 <= K <= N )第二行输入N个整数,表示该字符串的元素输出描述:输出一行表示答案示例1输入10 2 1 0 0 1 0 1 0 1 0 1输出5解法1:子字符串由长到短原创 2020-09-06 21:35:17 · 231 阅读 · 0 评论 -
华为——机试
1.计算偏移坐标围城的面积 小明从原点(0,0)开始沿着X轴前进,e为终点,过程中遇到 x offset y 则向Y轴方向偏移y,计算由X轴、x=e和走的路径围成的面积;输入:第一行:n e (中间用空格间隔,n:输入的点的个数,e:终点位置)接下来n行:x y (x offset y 表示在坐标x处,向Y轴偏移y)输出: 围成的面积n,e=list(map(int,input().split()))w=[]arr_s=[]for i in range(...原创 2020-09-04 00:03:17 · 3021 阅读 · 0 评论 -
python 精灵鼠从入口到出口的最少减少速度
题目描述猛兽侠中精灵鼠在利剑飞船的追逐下逃到一个n*n的建筑群中,精灵鼠从(0,0)的位置进入建筑群,建筑群的出口位置为(n-1,n-1),建筑群的每个位置都有阻碍,每个位置上都会相当于给了精灵鼠一个固定值减速,因为精灵鼠正在逃命所以不能回头只能向前或者向下逃跑,现在问精灵鼠最少在减速多少的情况下逃出迷宫?输入描述:第一行迷宫的大小: n >=2 & n <= 10000;第2到n+1行,每行输入为以','分割的该位置的减速,减速f >=1 & f <原创 2020-08-24 20:52:02 · 199 阅读 · 0 评论 -
python 序列合并
题目描述其中系数aj都是整数满足0≤aj≤1000且至少有两个系数严格大于0,分别将n=1,n=2,n=3n...代入以上函数可以得到一个无穷长度的整数序列,即用8个系数a7,a6...a0可以唯一确定一个无穷长度的整数序列,现在给出k个通过以上方法定义的无穷序列,你需要求出将这些序列所有数字放在一起后,第n小的数字是多少?输入描述:第一行包含一个整数k,1≤k≤104接下来k行,每行包含8个整数a7,a6,.....a0,表示一个函数的系数,0≤aj≤1000最后一行包含一个整数n原创 2020-08-21 14:02:11 · 963 阅读 · 0 评论 -
python 蘑菇阵
题目描述现在有两个好友A和B,住在一片长有蘑菇的由n*m个方格组成的草地,A在(1,1),B在(n,m)。现在A想要拜访B,由于她只想去B的家,所以每次她只会走(i,j+1)或(i+1,j)这样的路线,在草地上有k个蘑菇种在格子里(多个蘑菇可能在同一方格),问:A如果每一步随机选择的话(若她在边界上,则只有一种选择),那么她不碰到蘑菇走到B的家的概率是多少?输入描述:第一行N,M,K(1 ≤ N,M ≤ 20, k ≤ 100),N,M为草地大小,接下来K行,每行两个整数x,y,代表(x,y)原创 2020-08-18 23:56:45 · 239 阅读 · 0 评论 -
走法总数
走法总数有⼀座⾼度是 k 级台阶的楼梯,从下往上⾛,每跨⼀步只能向上 1 级或者 2 级台阶。请⽤你认为最优的⽅法求⼀共有多少种⾛法。例如给定楼梯台阶数 k 为 2,⼀共有 2 种⾛法。要求算法的时间复杂度需要⼩于 O(2n),可以⽤任何语⾔实现。输⼊:楼梯台阶数 k。输出:⾛法总数。求解:动态规划def move_counts(n): moves=[1,2] if n==1: return 1 elif n==2: retu原创 2020-08-14 00:08:05 · 291 阅读 · 0 评论 -
python 绝对值最⼩的数
1. 绝对值最⼩的数有⼀个已经排好序的整数序列(升序,⽆重复项),序列中可能有正整数、负整数或者 0,请⽤你认为最优的⽅法求序列中绝对值最⼩的数。要求不能使⽤顺序⽐较的⽅法(时间复杂度需要⼩于 O(n)),不能使⽤内置查找函数,可以⽤任何语⾔实现。输⼊:⼀个有序的整数序列。输出:绝对值最⼩的数。问题属于"连续顺序文件的查找” 问题1.1顺序查找定义:从有序的组合中,从第一个元素开始进行比较,选择需要的的元素;时间复杂度为:O(n)def seq_search(arr):原创 2020-08-13 23:36:33 · 1598 阅读 · 0 评论 -
餐馆——滴滴面试
题目描述某餐馆有n张桌子,每张桌子有一个参数:a 可容纳的最大人数; 有m批客人,每批客人有两个参数:b人数,c预计消费金额。 在不允许拼桌的情况下,请实现一个算法选择其中一部分客人,使得总预计消费金额最大输入描述:输入包括m+2行。 第一行两个整数n(1 <= n <= 50000),m(1 <= m <= 50000) 第二行为n个参数a,即每个桌子可容纳的最大人数,以空格分隔,范围均在32位int范围内。 接下来m行,每行两个参数b,c。分别表示第i批客人的人数和原创 2020-08-09 17:33:57 · 96 阅读 · 0 评论 -
连续最大和
题目描述一个数组有 N 个元素,求连续子数组的最大和。 例如:[-1,2,1],和最大的连续子数组为[2,1],其和为 3输入描述:输入为两行。 第一行一个整数n(1 <= n <= 100000),表示一共有n个元素 第二行为n个数,即每个元素,每个整数都在32位int范围内。以空格分隔。输出描述:所有连续子数组中和最大的值。示例1输入 3 -1 2 1输出 3结题思路:递归地定义最优解最优解必定是序列最后一个元素和前n-1个...原创 2020-08-07 22:07:11 · 288 阅读 · 0 评论 -
递归
1. 4个圆盘的Hanoi塔,总的移动次数为(C) A 7 B 8 C 15 D 16解析:汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。设移动n个盘子的汉诺塔问题需要g(n)次移动操作来完成。由展示移动过程算法原创 2020-07-23 21:54:07 · 411 阅读 · 0 评论