力扣刷题每日打卡(代码片段)

布小禅 布小禅     2022-12-08     566

关键词:


力扣刷题:

  1. 重新排列数组:
/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
int* shuffle(int* nums, int numsSize, int n, int* returnSize)
    if (numsSize==1) 
    
        *returnSize = 1;
        return nums;
    
    int *res = (int *)malloc(sizeof(int) * numsSize);
    int i=0;
    int j=0;
    while (j!=numsSize)
    
        res[j] = nums[i];
        res[j+1] = nums[i+(numsSize/2)];
        i++;
        j+=2;
    
    *returnSize = numsSize;
    return res;

  1. 数组串联:
/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
int* getConcatenation(int* nums, int numsSize, int* returnSize)
    int *res = (int *)malloc(sizeof(int) * (numsSize * 2));
    for (int i=0;i<numsSize;i++)
    
        res[i] = nums[i];
        res[i+numsSize] = nums[i];
    
    *returnSize = numsSize * 2;
    return res;

  1. 基于排列构建数组:
/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
int* buildArray(int* nums, int numsSize, int* returnSize)
    int *res = (int *)malloc(sizeof(int) * numsSize);
    for (int i=0;i<numsSize;i++)
    
        res[i] = nums[nums[i]];
    
    *returnSize = numsSize;
    return res;

  1. 一维数组的动态和:
/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
int* runningSum(int* nums, int numsSize, int* returnSize)
    if (numsSize == 1)
        *returnSize = 1;
        return nums;
    
    int *res = (int *)malloc(sizeof(int) * numsSize);
    for (int i=0;i<numsSize;i++)
    
        res[i] = sumNum(i, nums);
    
    *returnSize = numsSize;
    return res;

int sumNum(int n, int *nums)

    int sum = 0;
    for(int i=0;i<=n;i++)
    
        sum += nums[i];
    
    return sum;

剑指 Offer 58 - II. 左旋转字符串

char* reverseLeftWords(char* s, int n)
    int len = strlen(s);
    char *res = (char *)malloc(sizeof(char)*(len+1));
    for (int i=0;i<len;++i)
    
        res[i] = s[(i+n)%len];
    
    res[len] = '\\0';
    return res;

  1. IP 地址无效化
char * defangIPaddr(char * address)
    char* res = (char *)malloc(sizeof(char) * 30);
    int returnSize = 0;
    for (int i=0;address[i];++i)
    
        if (address[i] == '.')
        
            res[returnSize++] = '[';
            res[returnSize++] = '.';
            res[returnSize++] = ']';
        else
            res[returnSize++] = address[i]; 
        
    
    res[returnSize] = '\\0';
    return res;

剑指 Offer 05. 替换空格

char* replaceSpace(char* s)
    char *ans = (char *)malloc(sizeof(char) * strlen(s) * 3 + 1);
    int i = 0;
    while (*s) 
        if (*s == ' ') 
            ans[i++] = '%';
            ans[i++] = '2';
            ans[i++] = '0';
         else 
            ans[i++] = *s;
        
        s++;
    
    ans[i] = 0;
    return ans;

  1. 有多少小于当前数字的数字
/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
int* smallerNumbersThanCurrent(int* nums, int numsSize, int* returnSize)
    int *res = (int *)malloc(sizeof(int) * numsSize);
    for (int i=0;i<numsSize;i++)
    
        res[i] = minSum(nums[i], nums, numsSize);
    
    *returnSize = numsSize;
    return res;

int minSum(int n, int *nums, int numsSize)

    int res = 0;
    for (int i=0;i<numsSize;i++)
    
        if (nums[i] < n) res++;
    
    return res;

剑指 Offer 17. 打印从1到最大的n位数

/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
int* printNumbers(int n, int* returnSize)
    int  max = powSum(10, n) - 1;
    int *res = (int *)malloc(sizeof(int) * max);
    for (int i=0;i<max;i++)
    
        res[i] = i+1;
    
    *returnSize = max;
    return res;

int powSum(int x, int y)

    int res = 1;
    for (int i=0;i<y;i++)
    
        res *= x;
    
    return res;

  1. 按既定顺序创建目标数组
/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
int* createTargetArray(int* nums, int numsSize, int* index, int indexSize, int* returnSize)
    int len = 0;
    int *res = (int *)malloc(sizeof(int) * numsSize);
    for (int i=0;i<numsSize;++i)
    
        for (int j=len;j>index[i];--j)
        
            /*插入操作,也可以单独封装函数*/
            res[j] = res[j-1];
        
        res[index[i]] = nums[i];
        ++len;
    
    *returnSize = len;
    return res;

力扣刷题每日打卡

​力扣刷题:重新排列数组:/***Note:Thereturnedarraymustbemalloced,assumecallercallsfree().*/int*shuffle(int*nums,intnumsSize,intn,int*returnSize)if(numsSize==1)*returnSize=1;returnnums;in 查看详情

力扣刷题(代码片段)

两数之和给定一个整数数组nums和一个目标值target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定nums=[2... 查看详情

力扣刷题详解(含代码动态展示)(代码片段)

(文章目录)一、448.找到所有数组中消失的数字1.完整过程动态展示2.代码实现int*findDisappearedNumbers(int*nums,intnumsSize,int*returnSize)int*ptr=(int*)malloc(sizeof(int)*numsSize);intindex=0;intnoindex=0;while(index<numsSize)if(num 查看详情

力扣刷题-搜索插入位置(代码片段)

力扣题目链接题目描述给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。使用时间复杂度为O(logn)的算法。你可以假设数组中无重... 查看详情

力扣刷题:括号生成(java实现)(代码片段)

数字n代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且有效的括号组合。有效括号组合需满足:左括号必须以正确的顺序闭合。示例1:输入:n=3输出:["((()))","(()())",&... 查看详情

2021-11-08每日刷题打卡(代码片段)

2021-11-08每日刷题打卡力扣——二叉搜索树98.验证二叉搜索树和面试题04.05.合法二叉搜索树给你一个二叉树的根节点root,判断其是否是一个有效的二叉搜索树。有效二叉搜索树定义如下:节点的左子树只包含小于当前节点... 查看详情

力扣刷题—两数之和(代码片段)

题目:给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值target的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重... 查看详情

力扣刷题:合并区间(java实现)(代码片段)

题目描述:以数组intervals表示若干个区间的集合,其中单个区间为intervals[i]=[starti,endi]。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。示例1:输入:in... 查看详情

力扣刷题:岛屿数量(java实现)(代码片段)

给你一个由'1'(陆地)和'0'(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以... 查看详情

力扣刷题:全排列(java实现)(代码片段)

题目:给定一个不含重复数字的数组nums,返回其所有可能的全排列。你可以按任意顺序返回答案。示例1:输入:nums=[1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]示例2:输入:nums=[0,1]输出&#x... 查看详情

力扣刷题:字母异位词分组(java实现)(代码片段)

题目:给你一个字符串数组,请你将字母异位词组合在一起。可以按任意顺序返回结果列表。字母异位词是由重新排列源单词的字母得到的一个新单词,所有源单词中的字母都恰好只用一次。示例1:输入:strs=["eat... 查看详情

力扣刷题算法笔记(javascript版)(代码片段)

...很多算法这个up主讲的真的非常好适合小白去听算法都是力扣难度中等和简单的b站视频链接1、岛屿最大面积(求两数最大和)解析:提供一个数组,给了一个target要求是在数组中找到两个数的和为target思路:1... 查看详情

力扣刷题:寻找峰值(java实现)(代码片段)

题目:峰值元素是指其值严格大于左右相邻值的元素。给你一个整数数组nums,找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回任何一个峰值所在位置即可。你可以假设nums[-1]=nums[n]=... 查看详情

力扣刷题之贪心算法(c++)(代码片段)

...求解每一个子集的最优解将局部最优解迭代成全局最优解力扣例题455.分发饼干分析:因为饥饿度最小的孩子最容易吃 查看详情

力扣刷题:四数之和(c#)(代码片段)

给你一个由n个整数组成的数组nums,和一个目标值target。请你找出并返回满足下述全部条件且不重复的四元组[nums[a],nums[b],nums[c],nums[d]](若两个四元组元素一一对应,则认为两个四元组重复):0<=a,b,c,d<... 查看详情

力扣刷题:四数之和(c#)(代码片段)

给你一个由n个整数组成的数组nums,和一个目标值target。请你找出并返回满足下述全部条件且不重复的四元组[nums[a],nums[b],nums[c],nums[d]](若两个四元组元素一一对应,则认为两个四元组重复):0<=a,b,c,d<... 查看详情

力扣刷题:四数之和(c++)(代码片段)

给你一个由n个整数组成的数组nums,和一个目标值target。请你找出并返回满足下述全部条件且不重复的四元组[nums[a],nums[b],nums[c],nums[d]](若两个四元组元素一一对应,则认为两个四元组重复):0<=a,b,c,d<... 查看详情

力扣刷题:四数之和(c++)(代码片段)

给你一个由n个整数组成的数组nums,和一个目标值target。请你找出并返回满足下述全部条件且不重复的四元组[nums[a],nums[b],nums[c],nums[d]](若两个四元组元素一一对应,则认为两个四元组重复):0<=a,b,c,d<... 查看详情