1991. 找到数组的中间位置、724. 寻找数组的中心下标
724. 寻找数组的中心下标
https://leetcode-cn.com/problems/find-pivot-index/
1991. 找到数组的中间位置
https://leetcode-cn.com/problems/find-the-middle-index-in-array/
主要思想
还记得我知识点说到的前缀和么,就是这道题。。按照说的来就好了。这两道题是一样的一起来吧。
int findMiddleIndex(int* nums, int numsSize){ int total = 0, sum = 0; for(int i = 0; i < numsSize;i++) total += nums[i]; //全部和 for(int i = 0; i < numsSize;sum += nums[i],i++) if(sum * 2 == total - nums[i]) return i;//满足条件返回 return -1; }
结果分析
可以了
26. 删除有序数组中的重复项
26. 删除有序数组中的重复项
https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/
主要思想
统计重复元素,把非重复元素前移就好了。
int removeDuplicates(int* nums, int numsSize){ int count = 0; for(int i = 1;i < numsSize; ++i){ if(nums[i] == nums[i - count - 1]) //重复元素 统计 count ++; else nums[i - count] = nums[i]; //非重复元素前移 } return numsSize - count; //返回值 }
结果分析
简洁,完美
1018. 可被 5 整除的二进制前缀
1018. 可被 5 整除的二进制前缀
https://leetcode-cn.com/problems/binary-prefix-divisible-by-5/
主要思想
这道题就是按照要求算就好了,但是要注意会超出范围,及时取余。
返回数组需要malloc,之前之一注意堆栈的我竟然忘了。。。
bool* prefixesDivBy5(int* nums, int numsSize, int* returnSize){ bool * ans = malloc(sizeof(bool) * numsSize);//申请堆空间 int temp; //记录当前值 *returnSize = numsSize; for(int i = 0; i < numsSize; i++){ temp <<= 1; //移位2进制 temp += nums[i]; //将个位插入 temp %= 5; if(temp % 5) ans[i] = false; else ans[i] = true; } return ans; }
结果分析
凑合
1015. 可被 K 整除的最小整数
1015. 可被 K 整除的最小整数
https://leetcode-cn.com/problems/smallest-integer-divisible-by-k/
主要思想
这个要注意死循环,因为1111生成过程中为*10,所以必然不包含2和5的因子,所以要排除。
int smallestRepunitDivByK(int k){ if(k % 2 == 0 || k % 5 == 0) return -1;//排除情况 int temp = 0,i = 0; while(++i){ temp *= 10; temp++; temp %= k;//及时取余计算防止溢出 if(temp % k == 0) return i; } return 0; }
结果分析
还行
1869. 哪种连续子字符串更长
1869. 哪种连续子字符串更长
https://leetcode-cn.com/problems/longer-contiguous-segments-of-ones-than-zeros/
主要思想
直接统计最大1和最小0的字串比较就好了
bool checkZeroOnes(char * s){ int max1 = 0,max0 = 0; for(int i = 0;s[i] != 0;){ //内部有i++这里不能加i++ 否则结果不对 int count0 = 0,count1 = 0; while(s[i] == '0'){//统计1的数字 count0 ++; i++; } while(s[i] == '1'){//统计0的数字 count1++; i++; } max1 = count1 > max1 ? count1 : max1; max0 = count0 > max0 ? count0 : max0; } return max1 > max0; }
结果分析
还行
三、今日总结
今天的难度不高,就是题量大,写论文去咯-.-。。。。