阿里面试题
来源:互联网 发布:手机防辐射软件 编辑:程序博客网 时间:2024/06/07 05:09
题意:
给定一串数字
判断是否存在这三个元素,它们将数字串分为四个子串,其中每个子串的数字之和均相同(该3个元素不纳入计算)
要求时间复杂度和空间复杂度均不能超过O(n)
考虑到时间复杂度,下面给我我的方法。
void main(){ char ch[] = "12345678112345678112345678112345678"; int len = strlen(ch); int sum = 0,partOfSum=0; for (int i = 0; i < len; i++) { sum = sum + (char)ch[i] -0x30; } int flag[3] = {0,0,0}; for (int i = 0; i < len; i++) { if (flag[0] == 0) { if ((partOfSum * 4+ (ch[i]-0x30)*3) == sum) { flag[0] = 1; partOfSum = 0; continue; } partOfSum = partOfSum + (char)ch[i] - 0x30; } if (flag[0] == 1&& flag[1] ==0) { if ((partOfSum * 4 + (ch[i] - 0x30) * 3) == sum) { flag[1] = 1; partOfSum = 0; continue; } partOfSum = partOfSum + (char)ch[i] - 0x30; } if (flag[1] == 1 && flag[2] == 0) { if ((partOfSum * 4 + (ch[i] - 0x30) * 3) == sum) { flag[2] = 1; partOfSum = 0; continue; } partOfSum = partOfSum + (char)ch[i] - 0x30; } } if(flag[2] ==1) printf("we can divide the string");}
下面给出csdn一个其他博主的方法:
思路:
奇妙的利用了单调性,枚举第一段的和, 第一段的和确定了,那么接下来的2,3,4段的和就都确定了,什么单调性呢? 就是i右移,j,k都要右移。这就是单调性了,第一段变大,那么234段都要变大,所以i,j,k,都只会往右移,如果有正有负就没有单调性了。。。
代码:
#define first sum[i-1]#define second sum[j-1] -sum[i]#define third sum[k -1] -sum[j]#define four sum[n-1] -sum[k]const int max = (int )1e5;int a[max],sum[max];void main(){ int n; n = 35; int a[] = { 1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8,9 ,1,2,3,4,5,6,7,8,9 ,1,2,3,4,5,6,7,8 }; for (int i = 0; i < n; i++) { if (i == 0) sum[i] = a[i]; else sum[i] = sum[i - 1] + a[i]; } for (int i=1,j=1,k=1;i<n;i++) //这几句语句比较巧妙。 { while (first > second&&j < n) { j++; } if (first != second) continue; while (second > third&& k<n) k++; if (second != third)continue; if (first == second&&second == third &&third== four) cout << "we found the divide" << endl; } cout << "end" << endl;}
阅读全文
0 0
- 阿里面试题解答
- 阿里面试题
- 阿里面试题备份
- 阿里dba面试题
- 阿里面试题
- 阿里面试题
- 阿里前端面试题
- 阿里前端面试题
- 阿里前端面试题
- 阿里前端面试题
- 阿里面试题
- 阿里面试题总结
- 阿里前端面试题
- 阿里的面试题
- 阿里面试题集合
- 阿里面试题总结
- 阿里面试题总结
- 阿里面试题总结
- Struts 2 Tiles整合教程
- 【DOS网络命令】-tracert的用法
- Cannot perform this operation because there is no current transaction(不能执行此操作,因为没有当前事务。)
- Android内存泄露
- 【struts基础】Struts2的拦截器
- 阿里面试题
- ConcurrentHashMap源码分析(JDK8版本)
- 传值问题
- Spring boot MySQL Access denied
- @RequestMapping 和@RequestParam
- HttpMessageConverter(消息转换器 )和@responsebody使用
- 51nod1085背包问题
- mybatis的setting元素设置
- shell编程之对数据库的操作