关键词:
力扣刷题:
- 重新排列数组:
/**
* 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;
- 数组串联:
/**
* 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;
- 基于排列构建数组:
/**
* 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;
- 一维数组的动态和:
/**
* 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;
- 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;
- 有多少小于当前数字的数字
/**
* 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;
- 按既定顺序创建目标数组
/**
* 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]输出... 查看详情
力扣刷题:字母异位词分组(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<... 查看详情