您当前的位置: 首页 >  leetcode

不脱发的程序猿

暂无认证

  • 2浏览

    0关注

    492博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

力扣(LeetCode)刷题,简单题(第19期)

不脱发的程序猿 发布时间:2020-07-29 13:52:18 ,浏览量:2

目录

第1题:两数之和2-输入有序数组

第2题:换酒问题

第3题:山脉数组的峰顶索引

第4题:矩阵中的幸运数

第5题:去掉最低工资和最高工资后的工资平均值

第6题:非递增顺序的最小子序列

第7题:独一无二的出现次数

第8题:反转字符串中的单词3

第9题:玩筹码

第10题:字母大小写全排列

力扣(LeetCode)定期刷题,每期10道题,业务繁重的同志可以看看我分享的思路,不是最高效解决方案,只求互相提升。

第1题:两数之和2-输入有序数组

试题要求如下:

回答(C语言):

/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
int* twoSum(int* numbers, int numbersSize, int target, int* returnSize) {
    int* ret = (int*)malloc(sizeof(int) * 2);
    *returnSize = 2;

    for (int i = 0; i < numbersSize; ++i) {
        int low = i + 1, high = numbersSize - 1;

        while (low  target - numbers[i]) {
                high = mid - 1;
            } else {
                low = mid + 1;
            }
        }
    }

    ret[0] = -1, ret[1] = -1;
    return ret;
}

运行效率如下所示:

第2题:换酒问题

试题要求如下:

回答(C语言):

int numWaterBottles(int numBottles, int numExchange){
    int temp_numBottles = numBottles;
    int temp_num = 0;
    int temp_data = numBottles;

    while(temp_numBottles >= numExchange){
        temp_num = temp_numBottles/numExchange;
        temp_data += temp_num;
        temp_numBottles %= numExchange;
        temp_numBottles += temp_num;
    }

    return temp_data;
}

运行效率如下所示:

第3题:山脉数组的峰顶索引

试题要求如下:

回答(C语言):

int peakIndexInMountainArray(int* A, int ASize){
    int i=0;

    while(A[i] rightsum)
        {
            right--;
            rightsum += nums[right];
        }
        else
        {
            left++;
            leftsum +=nums[left];
        }
    }

    *returnSize = left+1;
    return nums;
}

运行效率如下所示:

第7题:独一无二的出现次数

试题要求如下:

回答(C语言):

bool uniqueOccurrences(int* arr, int arrSize){
    int result[2001];
    int result_nums[2001];
    memset(result, 0, 2001 * sizeof(int));
    memset(result_nums, 0, 2001 * sizeof(int));

    for(int i=0; i < arrSize;++i){
        if(arr[i] < 0){
            result[arr[i]*(-1)+1000] += 1;
        }
        else{
            result[arr[i]] += 1;
        }   
    }

    for(int j=0;j < 2001 ;++j){
        if(result[j]>0){
            result_nums[result[j]] += 1;
        }
        if(result_nums[result[j]]>1){
            return false;
        }
    }
    
    return true;
}

运行效率如下所示:

第8题:反转字符串中的单词3

试题要求如下:

解答思路:

1、用i和j锁定单词的首尾;

2、用revers对s[i]到s[j]进行翻转;

3、反复执行1、2直到遍历完字符串结束。

回答(C语言):

void revers(char *s,int i,int j){
    char temp;

    while(i            
关注
打赏
1664101891
查看更多评论
0.0872s