拼多多算法笔试
算法岗位:
1. 数组低谷长度
2. 重复字符串
3. 最小到达目标步数
4. 靓号
第一道卡在了输入上,很气,一直20%,后来发现是0就过了20%。
第二三道,100%
第四道,直接放弃了。
有没有小伙伴分享下第四题的AC思路。
分享下代码,求个人品能过笔试。
1. 第一道用三个指针记录 left low right,输入问题没过,代码就不放了。
2.
#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char str_s[100] = {0}; char str_p[100] = {0}; int str_s_len = 0, str_p_len = 0; scanf("%s", str_s); str_s_len = strlen(str_s); for (int i = 1; i <= str_s_len; ++i)//len { int j = 0; for (j = i; j < str_s_len; j = j + i)//start { int k = 0; for (k = j; k < ((j + i) > str_s_len ? str_s_len : (j + i)); ++k) { if (str_s[k] != str_s[k - i]) { break; } } if (k < ((j + i) > str_s_len ? str_s_len : (j + i))) break; } if (j >= str_s_len)//find! { memcpy(str_p, str_s, i); str_p_len = i; break; } } printf("%s\n", str_p); return 0; }
3.
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> int main() { int target = 0; scanf("%d", &target); int sum = 0; int steps = 0; int loop_cnt = pow(10, 9); target = (target > 0 ? target : -target); for (int i = 0; i < loop_cnt; ++i) { sum += i; if (sum > target) { int bias = sum - target; if (bias % 2 == 0) { steps = i; break; } }else if (sum == target) { steps = i; break; } } printf("%d\n", steps); return 0; }
#拼多多#