算法题

这篇博客探讨了单向链表的各种排序算法,包括快速排序的实现及其优化,以及面对大规模数据时的处理策略。此外,还涉及了二进制反转、剪枝、递归与动态规划的区别、数组和链表操作、多线程编程、数据库原子性保障等多方面的问题,展示了丰富的算法知识和问题解决技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

.给一个单向链表,有哪些排序方法?时间复杂度是多少?(答了很多)
用快排实现一下这个单向链表。
实现完了后,要求写一些测试用例,并运行
能不能优化一下你的代码
swap函数你使用的是赋值,这样慢了,能不能再快一些

求15个数的前5大的数
我心想这不是求前K大数吗,有什么难的,我说用堆排序,面试官说你讲一下堆排序怎么实现,这就回答的很流利,然后叫我实现一下代码,用测试用例实现运行
代码完成后,问我现在不能用堆排序,怎么做?我说可以Quick Select
然后说现在数很大,有3w个数据怎么查?
我说是否有很多重复数据,若重复数据多可以用hash,去掉重复元素再排序,或者用堆
然后询问我现在有10亿个数据,我说用分治法,然后讲了下怎么实现(中间提到了bitmap,失误了,想错方向了)

给一个数6,2进制为110,反转这个二进制为011,返回为3
拿到题感觉挺简单的,一开始想能不能用数学方法先解,花了3分钟吧,感觉不行,然后老老实实的用位运算进行与计算
写完一样的测试用例跑一遍,然后出现了问题,一开始我设置的二进制固定为了32位(被之前的大数影响了),然后修改代码,设置一个numsize统计二进制数的位数
调用了math.h中的floor(log2)来实现这个统计位数,测试用例也过了,问面试官可以吗?面试官说,不能调库。写了1小时多的代码的我就懵了,然后后面就是实现这个统计位数,以及优化代码

讲讲剪枝是怎么进行的

递归和动态规划的区别?动态规划常用来做什么类型的题目

  1. 合并两个有序数组
  2. 删除链表的倒数第n个节点

数组和链表有什么区别?
如果要让你对数组中的数字进行排序你会有哪些方法?
快速排序是稳定的排序吗?有什么方法尽量避免变量选取不好的情况?
假如说,现在有一个数组,需要你去找到最大的 K 的数字,该怎么实现?

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

手写多线程交叉打印数字(√)

在这里插入图片描述
在这里插入图片描述

将给定数组中的全体奇数放在全体偶数前面

这个不适用额外空间能做到吗

在这里插入图片描述
二叉树的RR LL旋转?

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
int[] 数组 三数相加为 0 怎么实现?排序了之后呢?

在这里插入图片描述
两重for循环大的应该放那边儿比较省时

手撕单调栈

在这里插入图片描述
设计题:一个应用程序会写两个数据库,保证这两个数据库的操作满足原子性(随时存在宕机的可能性)

设计题:线上有一个服务调用十分缓慢,要如何排查?

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值