某top大厂提前批三面算法题

给一个n*m的矩阵(用一维数组表示),要求原地转置,空间复杂度要求O(1)
怎么解?
#关于提前批我想问#
全部评论
考虑一维矩阵的转置的本质,其实就是对于一个长度为n*m的排列应用一个置换P。考虑给定一个排列和一个转置,能否使用O(1)的空间对该排列应用转置,感觉不太好做,因为需要再遍历置换环的时候标记一下哪些位置被遍历过了,即需要用到一个vis数组,但这样会导致用到额外的空间开销。考虑把vis数组偷偷藏到原数组中,比如把a[x]=-a[x]来标识visited,或者把某个高二进制位改为1来标识。
4 回复 分享
发布于 2023-08-06 04:04 广东
写了一种只适用于原矩阵行数小于列数的情况。。。
3 回复 分享
发布于 2023-08-05 00:33 英国
如果数据范围有明确指出,或许可以通过顺序遍历 -> 找路径 ->打tag(比如取负数或者全部加100000000……)。类似于bfs中flood fill思想。
3 回复 分享
发布于 2023-08-04 22:01 湖北
我也遇到类似了,但放宽了空间复杂度,虽然easy,a了也不影响挂啊
1 回复 分享
发布于 2023-08-04 22:57 浙江
我感觉没法不用额外空间啊
1 回复 分享
发布于 2023-08-04 21:39 上海
直接交换数值应该就行吧,原有的矩阵不算额外空间
1 回复 分享
发布于 2023-08-04 20:11 重庆
m
点赞 回复 分享
发布于 2023-08-08 13:45 北京
先上下折叠再对角线翻转能不能实现
点赞 回复 分享
发布于 2023-08-08 11:17 北京
leetcode原题也没要求O(1)空间,且整个讨论区都没有一个O(1)的解法,基本证明这题没办法O(1)
点赞 回复 分享
发布于 2023-08-07 16:24 新加坡
有没有数据范围呢
点赞 回复 分享
发布于 2023-08-04 21:57 湖北
字节?
点赞 回复 分享
发布于 2023-08-04 21:25 北京
直接转置呗,
点赞 回复 分享
发布于 2023-08-04 19:57 四川
和hot100一道题挺像
点赞 回复 分享
发布于 2023-08-04 19:55 上海

相关推荐

04-14 20:10
已编辑
门头沟学院 Java
点赞 评论 收藏
分享
爱吃肉的伊登在写日记:好棒,27届简历能做成这个样子,但是第一个项目感觉cover住难度还是不小的,特别是二面的时候肯定要对分布式系统设计这一块儿有高出正常面试者的水平才行
点赞 评论 收藏
分享
评论
6
23
分享

创作者周榜

更多
牛客网
牛客企业服务