最全名企笔算法题

本文汇总了多个常见的名企面试算法题,包括IP地址的解析、寻找数组中特定和的子集、原地排序数组、填充'X'的矩阵、一步编辑字符串判断、求最大乘积子序列、单词表示数字、切分单词数组、找环路数组中的k大元素、堆化数组、找子矩阵和为0的坐标、滑动窗口最大值、环形路径上的加油站问题、划分链表、链表排序、找链表交叉节点、数组乱序字符串、螺旋矩阵、寻找单一数字、木头切割、逆波兰表达式、分割整数数组、三元组和为0、删除数字后的最小正整数、组合总和、四元组和为目标值、跳跃游戏、计算尾部零、稀疏数、插入区间、峰值位置、分类排序数组、字符串是否为数字、字符串转整数、子集生成、组合生成、最大间距矩形、最大正方形和、最接近三元组和、最小差、最小调整代价、最长公共子串
摘要由CSDN通过智能技术生成

·给一个由数字组成的字符串。写一个函数求出其可能恢复为的所有IP地址。

格式:

第一行输入一个由数字组成的字符串 T,最后由这个字符串所能形成的所有的 IP 地址的数组。

样例输入

T = "25525511135"

样例输出

[

 "255.255.11.135",

 "255.255.111.35"

]

 

 

 

 

 

 

·给定 n 个不同的正整数,整数 k(k< = n)以及一个目标数字。在这 n 个数里面找出 k 个数,使得这 k 个数的和等于目标数字,写一个函数实现找到不同的方案的数量。

格式:

输入第一行输入一个整数数组,第二行输入一个整数 k ,第三行输入一个整数 target最后输出使得数组中不同的 k 个数的和为 target 的种类。

样例输入

[ 1,2,3,4 ]

k = 2

target = 5

样例输出

2

 

 

 

 

 

 

 

·给你一个没有排序的数组,请将原数组就地重新排列满足如下性质:

nums[0] <= nums[1] >= nums[2] <= nums[3]....

请写一个函数实现此排序功能。 

 

注意事项:

请就地排序数组,也就是不需要额外数组

 

格式:

输入第一行输入一个带排序的数组nums,最后输出按照要求排序后的数组序列。

 

样例输入

nums = [ 3,5,2,1,6,4 ] 

样例输出

[ 1,6,2,5,3,4 ]

 

 

 

 

 

 

 

 

 

·给一个二维的矩阵,包含 'X' 和 'O',写一个函数找到找到所有被 'X' 围绕的区域,并用 'X' 填充满。

格式:

第一行输入一个由 ‘X’ 和 ‘O’ 的数组,最后输出用 ‘X’ 填充完的数组。

样例输入

X X X X

X O O X

X X O X

X O X X

样例输出

X X X X

X X X X

X X X X

X O X X

 

 

 

 

 

 

·给你两个字符串 S 和 T, 判断他们是否只差一步编辑。即两个字符串是否只有一个字符不同。编写一个函数实现此功能。

格式:

输入第一行输入一个字符串 S,第二行输入一个字符串 T,最后输出是否可以只差一步编辑,如果可以输出 true,如果不可以则输出 false。

样例输入

S = "ade"

T = "aDe"

样例输出

True

 

 

 

 

·写一个函数找出一个序列中乘积最大的连续子序列,其中序列中至少包含一个数)。

格式:

第一行输入一个数组,最后依次输出最大乘积的子序列及其乘积的大小。

样例输入

[ 2,3,-2,4 ]

样例输出

[ 2,3 ]

6

 

 

 

 

 

 

·给一个非负整数 n, 用单词打印数字,写一个方法输出用来表示的数字的单词。

格式:

第一行输入一个非负整数,最后用单词打印出数字。

样例输入

n = 125

样例输出

one hundred twenty five

 

 

 

 

 

 

 

 

·给出一个字符串 s 和一个词典,写一个函数判断字符串 s 是否可以被空格切分成一个或多个出现在字典中的单词。

格式:

输入行输入一个字符串 s 和一个字典 dict,最后输出字符串 s 是否可以被空格切分成一个或多个出现在字典中的单词。如果可以则输出 true,不可以则输出 false。

样例输入

s = "lintcode"

dict = [ "lint","code" ]

样例输出

True

 

 

 

 

·给一个整数数组,写一个函数实现在数组中找到第 k 大的元素。

注意事项:

你可以交换数组中的元素的位置。

格式:

输入依次输入一个整数数组和一个整数 k ,最后输出数组中第 k 大的元素。

样例输入

[ 9,3,2,6,11]

k = 1

样例输出

11

 

 

 

 

 

 

·给定 n 和 k,写一个函数,求123..n 组成的排列中的第 k 个排列。

注意事项:1 ≤ n ≤ 9

格式:

第一行输入一个整数 n,第二行输入一个整数 k,最后输出 n 的第k 个全排列。

样例输入

n = 3

k = 4

样例输出

231

 

 

 

 

 

·给出一个整数数组,写一个函数将数组堆化。堆化操作就是把它变成一个最小堆数组。对于堆数组A,A[0] 是堆的根,并对于每个 A[i],A [i * 2 + 1] 是 A[i] 的左儿子并且 A[i * 2 + 2] 是A[i] 的右儿子。

说明:

什么是堆?

 

 

 

 

 

·堆是一种数据结构,它通常有三种方法:push, pop 和top。其中,“push” 添加新的元素进入堆,“pop” 删除堆中最小/最大元素,“top” 返回堆中最小/最大元素。

什么是堆化?

 

 

·把一个无序整数数组变成一个堆数组。如果是最小堆,每个元素 A[i],我们将得到 A[i * 2 + 1] >= A[i] 和 A[i * 2 + 2] >= A[i]

如果有很多种堆化的结果?返回其中任何一个。

格式:

输入行输入一个整数数组,最后输出经过堆化后的数组。

样例输入

[ 3,2,1,4,5]

样例输出

[ 1,2,3,4,5]

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值