【万人千题】算法多维枚举入门的解题报告

之前没做出来的题目又回去做了

目录

1,392. 判断子序列 - 力扣(LeetCode) (leetcode-cn.com)

2,240. 搜索二维矩阵 II - 力扣(LeetCode) (leetcode-cn.com)

3,2006. 差的绝对值为 K 的数对数目 - 力扣(LeetCode) (leetcode-cn.com)

4,389. 找不同 - 力扣(LeetCode) (leetcode-cn.com)

5,1431. 拥有最多糖果的孩子 - 力扣(LeetCode) (leetcode-cn.com)

6,1588. 所有奇数长度子数组的和 - 力扣(LeetCode) (leetcode-cn.com)

7,1534. 统计好三元组 - 力扣(LeetCode) (leetcode-cn.com)

8,771. 宝石与石头 - 力扣(LeetCode) (leetcode-cn.com)

 9,1389. 按既定顺序创建目标数组 - 力扣(LeetCode) (leetcode-cn.com)

 10,14. 最长公共前缀 - 力扣(LeetCode) (leetcode-cn.com)

11,1925. 统计平方和三元组的数目 - 力扣(LeetCode) (leetcode-cn.com)



1,392. 判断子序列 - 力扣(LeetCode) (leetcode-cn.com)

bool isSubsequence(char * s, char * t)
{
    int len=strlen(s);
    int len2=strlen(t);
     int i=0;
     int j=0;
     while(*(s+i)!='\0')
     {
         if(*(s+i)==*(t+j))
         {
             i++;
             j++;
         }
         else
         j++;
         if(j>len2)
         break;
     }
     return i==len;
}

2,240. 搜索二维矩阵 II - 力扣(LeetCode) (leetcode-cn.com)

bool searchMatrix(int** matrix, int matrixSize, int* matrixColSize, int target)
{
      int i=0;
      for(i=0;i<matrixSize;i++)
      {
          int j=0;
          for(j=0;j<*matrixColSize;j++)
          {
              if(matrix[i][j]==target)
              return true;
          }
      }
      return false;
}

3,2006. 差的绝对值为 K 的数对数目 - 力扣(LeetCode) (leetcode-cn.com)

int countKDifference(int* nums, int numsSize, int k)
{
    int count=0;
    int i=0;
    for(i=0;i<numsSize;i++)
    {
        int j=0;
        for(;j<numsSize;j++)
        {
            if(nums[i]-nums[j]==k)
            count++;
        }
    }
    return count;
}

4,389. 找不同 - 力扣(LeetCode) (leetcode-cn.com)

char findTheDifference(char * s, char * t)
{
      int i=0;
      int lens=strlen(s);
      int lent=strlen(t);
      for(i=0;i<lens;i++)
      {
          int j=0;
          for(j=0;j<lent;j++)
          {
              if(s[i]==t[j])
              {
                  t[j]='0';
                  break;
              }
          }
      }
     for(i=0;i<lent;i++)
     {
         if(t[i]!='0')
         return t[i];
     }
    return 0;
}

5,1431. 拥有最多糖果的孩子 - 力扣(LeetCode) (leetcode-cn.com)

/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
bool* kidsWithCandies(int* candies, int candiesSize, int extraCandies, int* returnSize)
{
    bool* ret=(bool*)malloc(sizeof(bool)*candiesSize);
    int i=0;
    int count=0;
    for(i=0;i<candiesSize;i++)
    {
        count=0;
        int j=0;
        for(j=0;j<candiesSize;j++)
        {
            if(candies[i]+extraCandies>=candies[j])
            count++;
        }
        if(count==candiesSize)
        ret[i]=true;
        else
        ret[i]=false;
    }
    *returnSize=candiesSize;
    return ret;
}

6,1588. 所有奇数长度子数组的和 - 力扣(LeetCode) (leetcode-cn.com)

int sumOddLengthSubarrays(int* arr, int arrSize)
{
    int i=0;
    int sum=0;
    for(i=1;i<=arrSize;i+=2)
    {
         int j=0;
         for(j=0;j+i<=arrSize;j++)
         {
             int k=0;
             for(k=0;k<i;k++)
               sum+=arr[j+k];
         }
    }
    return sum;
}

 

7,1534. 统计好三元组 - 力扣(LeetCode) (leetcode-cn.com)

int countGoodTriplets(int* arr, int arrSize, int a, int b, int c)
{
    int i=0;
    int count=0;
    for(i=0;i<arrSize;i++)
    {
        int j=i+1;
        for(;j<arrSize;j++)
        {
            int k=j+1;
            for(;k<arrSize;k++)
            {
                if(abs(arr[i]-arr[j])<=a&&abs(arr[i]-arr[k])<=c&&abs(arr[j]-arr[k])<=b)
                count++;
            }
        }
    }
    return count;
}

8,771. 宝石与石头 - 力扣(LeetCode) (leetcode-cn.com)

int numJewelsInStones(char * jewels, char * stones)
{
    int len1=strlen(jewels);
    int len2=strlen(stones);
    int i=0;
    int count=0;
    for(;i<=len1;i++)
    {
        int j=0;
        for(j=0;j<len2;j++)
        {
            if(jewels[i]==stones[j])
            count++;
        }
    }
    return count;
}

 9,1389. 按既定顺序创建目标数组 - 力扣(LeetCode) (leetcode-cn.com)

/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
 void back(int* arr,int n)
 {
      int i=n;
      int tmp;
      for(i=n;arr[i]!=-1;i++)
            ;
      for(;i>n;i--)
      {
          arr[i]=arr[i-1];
      }
 }
int* createTargetArray(int* nums, int numsSize, int* index, int indexSize, int* returnSize)
{
       *returnSize = numsSize;
       int* target=(int*)malloc(sizeof(int)*(numsSize+2));
       int i=0;
       for(i=0;i<numsSize+2;i++)
       {
           target[i]=-1;
       }
       for(i=0;i<numsSize;i++)
       {
               if(target[index[i]]==-1)
               target[index[i]]=nums[i];
               else
               {
                   back(target,index[i]);
                   target[index[i]]=nums[i];
               }
       }
       return target;
}

 10,14. 最长公共前缀 - 力扣(LeetCode) (leetcode-cn.com)


char * longestCommonPrefix(char ** strs, int strsSize)
{
     int i=0;
     int count=0;
     int len=strlen(strs[0]);
     for(i=1;i<strsSize;i++)
     {
         int len1=strlen(strs[i]);
         if(len>len1)
         len=len1;
     }
     printf("%d",len);
     char* ret=(char*)malloc(sizeof(char)*209);
         int j=0;
         for(j=0;j<len;j++)
         {
                for(i=0;i<strsSize;i++)
                 {
                  if(strs[0][j]!=strs[i][j])
                      break;
                 }
               if(i==strsSize)
               {
                   ret[count]=strs[0][j];
                   count++;
               }
               if(i<strsSize)
               break;
         }
     ret[count]='\0';
      return ret;
}

11,1925. 统计平方和三元组的数目 - 力扣(LeetCode) (leetcode-cn.com)

int countTriples(int n)
{
      int i=1;
      int count=0;
      for(i=1;i<=n;i++)
      {
           int j=0;
           for(j=1;j<=n;j++)
           {
               int k=0;
               for(k=1;k<=n;k++)
               {
                   if(i*i+j*j==k*k)
                   count++;
               }
           }

      }
      return count;
}

 基本上的思想就是暴力解题,搜索就完了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值