2681 分钟

数组 int firstMissingPositive(int* nums, int numsSize){ int a[10000001]={0}; while(numsSize--){ if(nums[numsSize]<=0||nums[numsSize]>=10000000) continue; else if(a[nums[numsSize]]==0) a[nums[numsSize]]=1; } int x=0; whil
2k2 分钟

仅能过 words 中不存在重复字符串的测试用例 😖 void nex(int *next, char *s) { next[0] = 0; int now = 0, j = 1, lens = strlen(s); while (j < lens) { if (s[now] == s[j]) next[j++] = ++now; else if (now) now = nex
4641 分钟

ori维护上一起点的覆盖范围,cover维护最远覆盖。 j<=ori时,即此时j为上一起点应跳到的点。 而numsSize为1时,则在return时做特殊处理。 int jump(int* nums, int numsSize){ int cover=nums[0],step=1,j=1,ori=0; while(cover<numsSize-1){ if(j==numsSize){ return 0; } if(nums[j]+j&
2061 分钟

维护终点end bool canJump(int* nums, int numsSize){ int max=numsSize-2,end=numsSize-1; while(max>=0){ if(nums[max]>=end-max) end=max; max-=1; } return end?0:1; }