Leetcode——多维枚举问题

135 阅读1分钟

本文已参与[新人创作礼]活动,一起开启掘金创作之路

392.判断子序列

leetcode-cn.com/problems/is…

 采用双指针 i ,j  从t中寻找是否包含s的字母,如果包含 则 i 加一。

bool isSubsequence(char * s, char * t){
int n=strlen(s),m=strlen(t);
int i=0,j=0;
while(i<n&&j<m)           //不超过边界值
{
    if(s[i]==t[j])
    {
        i++;
    }
    j++;
}return i==n;            //相等的时候返回true  否则返回false
}

2006. 差的绝对值为 K 的数对数目

leetcode-cn.com/problems/co…

 这道题的解答和条件都在题目上,认真分析题目即可。错误了好几次都是因为没有看完整题目要求。

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

240. 搜索二维矩阵 II

leetcode-cn.com/problems/se…

核心是通过比较matrix[i][j]和target大小来移动直到找到等于target的那个位置

bool searchMatrix(int** matrix, int matrixSize, int* matrixColSize, int target){
int m=matrixSize,n=*matrixColSize;
int j=n-1,i=0;
while(i<m&&j>=0)
{
    if(matrix[i][j]>target)    //大于的话令其向左移动
    {
        j--;

    }else if(matrix[i][j]<target) //小于就向下移动
    {
        i++;
    }
    else return true;           //直到相等的时候返回true
}return false;
}