这是四则或许对你有帮助的讯息
1、👉 最近我发现了一个每日都会推送最新校招资讯的《校招日程》文档,其中包括往届补录、应届实习校招信息,比如各种大厂、国企、银行、事业编等信息都会定期更新,帮忙扩散一下。
2、😍 免费分享阿秀个人学习计算机以来的收集到的免费资源,点此白嫖。
3、🚀如果你想在校招中顺利拿到更好的offer,阿秀建议你多看看前人踩过的坑和留下的经验,事实上你现在遇到的大多数问题你的学长学姐师兄师姐基本都已经遇到过了。
4、🔥 欢迎准备计算机校招的小伙伴加入我的学习圈子,一个人踽踽独行真的不如一群人报团取暖,过去22届和23届的小伙伴好好跟着走下去的,最后基本都拿到了不错的offer!如果你需要《阿秀的学习笔记》网站中📚︎校招八股文相关知识点的PDF版本的话,可以点此下载 。
# 29. 两数相除 没想明白
力扣原题链接(点我直达) (opens new window)
给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。
返回被除数 dividend 除以除数 divisor 得到的商。
示例 1:
输入: dividend = 10, divisor = 3 输出: 3 示例 2:
输入: dividend = 7, divisor = -3 输出: -2 说明:
被除数和除数均为 32 位有符号整数。 除数不为 0。 假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−231, 231 − 1]。本题中,如果除法结果溢出,则返回 231 − 1。
# 第一版 个人版本,超时了
int divide(int dividend, int divisor) {//被除数和除数都是整数,且结果不能溢出
if (dividend == INT_MIN && divisor == -1) return INT_MAX;
if (dividend == 0) return 0;
int signal = -1;
if ((dividend > 0 && divisor > 0) || (dividend < 0 && divisor < 0)) signal = 1;
if (signal == 1)
{
signal = 0;
if (dividend > 0)
{
while (dividend >= 0 && signal<=INT_MAX) {
dividend -= divisor;
signal += 1;
}
}
else {
while (dividend <= 0 && signal <= INT_MAX) {
dividend -= divisor;
signal += 1;
}
}
return signal== INT_MAX?INT_MAX:signal-1;
}
else
{
signal = 0;
if (dividend > 0)
{
while (dividend >= 0 && signal>=INT_MIN) {
dividend += divisor;
signal -= 1;
}
}
else {
while (dividend <= 0 && signal >= INT_MIN) {
dividend += divisor;
signal -= 1;
}
}
return signal == INT_MIN ? INT_MIN : signal + 1;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42