赞
踩
题目:
思想:
我的代码
- int findMaxConsecutiveOnes(int* nums, int numsSize)
- {
- int maxsize = 0, size = 0;
- for (int i = 0; i < numsSize; i++)
- {
-
- if (nums[i] == 1) //我的判断位置
- {
- maxsize++;
- if (maxsize > size)
- {
- size = maxsize;
- }
-
- }
- else
- {
- maxsize = 0;
-
- }
- }
- return size;
- }
官方代码
- int findMaxConsecutiveOnes(int* nums, int numsSize) {
- int maxCount = 0, count = 0;
- for (int i = 0; i < numsSize; i++) {
- if (nums[i] == 1) {
- count++;
- } else {
- maxCount = fmax(maxCount, count);
- count = 0;
- }
- }
- maxCount = fmax(maxCount, count);
- return maxCount;
- }
-
- 作者:LeetCode-Solution
- 链接:https://leetcode-cn.com/problems/max-consecutive-ones/solution/zui-da-lian-xu-1de-ge-shu-by-leetcode-so-252a/
- 来源:力扣(LeetCode)
- 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
缺点
maxCount = fmax(maxCount, count);
官方回答调用了系统函数,
不过建议新手自己写。
优点:(下面有例子,文字看不懂没问题)
在判断中我判断是否记录入maxsize位置与官方不一致。(建议(边看代码,边往下看)
其原因在于在我的判断发生在每一次记录成功之时,也就是nums【i】=1;这样每一次这个条件判断成功,就会于之前的maxsize发生比较。
而官方代码是nums【i】!=1时进行比较。也就是说尽管count已经大于原来的数,但还要nums【i】!=1时才比较,所以在最后还要在循环结束后计较一番
例子:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。