当前位置:   article > 正文

【力扣每日一题】

【力扣每日一题】

【力扣第448题】找到所有数组中消失是数字

思路:参考答案

1、将遍历值对应的下标值变为负数,其中如果遍历值对应的下标值本就是负数,则不作改变

2、遍历返回大于0的数下标

代码:
  1. /**
  2. * Note: The returned array must be malloced, assume caller calls free().
  3. */
  4. int* findDisappearedNumbers(int* nums, int numsSize, int* returnSize){
  5.   int *ans=malloc(sizeof(int)*numsSize);
  6.   *returnSize = 0;
  7.   int temp;
  8.   for(int i = 0; i < numsSize; i++)
  9.   {
  10.       if(nums[i] < 0)
  11.       {
  12.           temp = nums[i]*(-1) - 1;
  13.       }
  14.       else
  15.       {
  16.           temp = nums[i]-1;
  17.       }
  18.       if(nums[temp]>0)
  19.       {
  20.           nums[temp] *= (-1);
  21.       }
  22.        
  23.   }
  24.   for(int i = 0;i < numsSize;i++)
  25.   {
  26.       if(nums[i] > 0)
  27.       {
  28.           ans[(*returnSize)++] = i+1;
  29.       }
  30.   }
  31.   return ans;
  32. }

【455】分发饼干

思路:

1、先排序,定义一个计数变量temp

2、两重for循环,判断g[i]是否小于等于s[j]

3、若g[i]小于等于s[j],则temp加一,s数组开始遍历值变为j+1(防止重复判断多加);

代码:
  1. int cmp(const void *x,const void *y)
  2. {
  3. return *(int*)x-*(int*)y;
  4. }
  5. int findContentChildren(int* g, int gSize, int* s, int sSize) {
  6.   int temp=0;
  7.   int m=0;
  8.   qsort(g,gSize,sizeof(int),cmp);
  9.   qsort(s,sSize,sizeof(int),cmp);
  10.   for(int i = 0;i<gSize;i++)
  11.   {
  12.       for(int j = m;j<sSize;j++)
  13.       {
  14.           if(g[i] <= s[j])
  15.           {
  16.               temp++;
  17.               m = j+1;
  18.               break;
  19.           }
  20.            
  21.       }
  22.   }
  23.  
  24.   return temp;
  25.   //return 1;
  26.    
  27. }

【485】最大连续1的个数

思路:

1、定义计数变量temp和存储temp最大数的变量n

2、遍历判断,为1 temp++;不为1,temp 置0

3、返回n

代码:
  1. int cmp(const void *x,const void *y)
  2. {
  3. return *(int*)x-*(int*)y;
  4. }
  5. int findContentChildren(int* g, int gSize, int* s, int sSize) {
  6.   int temp=0;
  7.   int m=0;
  8.   qsort(g,gSize,sizeof(int),cmp);
  9.   qsort(s,sSize,sizeof(int),cmp);
  10.   for(int i = 0;i<gSize;i++)
  11.   {
  12.       for(int j = m;j<sSize;j++)
  13.       {
  14.           if(g[i] <= s[j])
  15.           {
  16.               temp++;
  17.               m = j+1;
  18.               break;
  19.           }
  20.            
  21.       }
  22.   }
  23.  
  24.   return temp;
  25.   //return 1;
  26.    
  27. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/870223
推荐阅读
相关标签
  

闽ICP备14008679号