自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 LeetCode 717. 1比特与2比特字符-C语言

LeetCode 717. 1比特与2比特字符-C语言题目描述解题思路遍历一遍数组,遇到1跳一个,看最后结果是否为0。代码bool isOneBitCharacter(int* bits, int bitsSize){ bool flag = 0; for (int i = 0; i < bitsSize; i++) { flag = bits[i]; if (bits[i] == 1) { i++;

2021-02-28 22:07:57 208

原创 LeetCode 674. 最长连续递增序列-C语言

LeetCode 674. 最长连续递增序列-C语言题目描述解题思路本题通过遍历整个数组来更新最长升序序列的长度。代码int findLengthOfLCIS(int* nums, int numsSize){ if (numsSize == 0) { return 0; } if (numsSize == 1) { return 1; } int length = 1; int end = 1; for (

2021-02-24 22:10:35 290

原创 LeetCode 643. 子数组最大平均数Ⅰ-C语言

LeetCode 643. 子数组最大平均数Ⅰ-C语言题目描述解题思路本题使用滑动窗口,且窗口大小固定不变,首先确定初始窗口的值,然后滑动窗口,寻找到窗口内的最大值。代码double findMaxAverage(int* nums, int numsSize, int k){ int maxsum = 0; int sum = 0, i; for (i = 0; i < k; i++) { sum += nums[i]; } max

2021-02-22 17:25:51 277

原创 LeetCode 628. 三个数的最大乘积-C语言

LeetCode 628. 三个数的最大乘积-C语言题目描述解题思路我们实际上只要求出数组中最大的三个数以及最小的两个数,因此我们可以用线性扫描直接得出这五个数。代码int maximumProduct(int* nums, int numsSize) { int min1 = INT_MAX, min2 = INT_MAX; int max1 = INT_MIN, max2 = INT_MIN, max3 = INT_MIN; for (int i = 0; i &lt

2021-02-18 23:44:26 312

原创 LeetCode 605. 种花问题-C语言

LeetCode 605. 种花问题-C语言题目描述解题思路本题使用贪心算法,要判断三个连续的坑才能确定是否可以种植。代码bool canPlaceFlowers(int* flowerbed, int flowerbedSize, int n) { int count = 0; int prev = -1; for (int i = 0; i < flowerbedSize; i++) { if (flowerbed[i] == 1) {

2021-02-18 16:27:18 801

原创 LeetCode 561. 数组拆分Ⅰ-C语言

LeetCode 561. 数组拆分Ⅰ-C语言题目描述解题思路代码int cmp(int *a, int *b) { return *a - *b;}int arrayPairSum(int *nums, int numsSize) { qsort(nums, numsSize, sizeof(int), cmp); int ans = 0; for (int i = 0; i < numsSize; i += 2) { ans += nu

2021-02-17 21:25:45 115

原创 LeetCode 509. 斐波那契数-C语言

LeetCode 509. 斐波那契数-C语言题目描述解题思路通过斐波那契数的递推公式求解:F(n) = F(n−1) + F(n−2)代码int fib(int n) { if (n < 2) { return n; } int f1 = 0, f2 = 0, f3 = 1; for (int i = 2; i <= n; i++) { f1 = f2; f2 = f3; f3 = f1

2021-02-15 20:30:22 126

原创 LeetCode 448. 找到所有数组中消失的数字-C语言

LeetCode 448. 找到所有数组中消失的数字-C语言题目描述解题思路我们可以用一个哈希表记录数组 nums 中的数字,由于数字范围均在 [1,n]中,记录数字后我们再利用哈希表检查 [1,n]中的每一个数是否出现,从而找到缺失的数字。代码int* findDisappearedNumbers(int* nums, int numsSize, int* returnSize){ for (int i = 0; i < numsSize; i++) { int

2021-02-15 20:18:23 275

原创 LeetCode 485. 最大连续1的个数-C语言

LeetCode 414. 第三大的数-C语言题目描述解题思路在给定数组中遍历每一数组项,为1时count加一,并比较count和max大小,将较大的值赋给max,为0时count清零。代码int findMaxConsecutiveOnes(int* nums, int numsSize){ int i; int count = 0, max = 0; for (i = 0; i < numsSize; i++) { if (nums[i] ==

2021-02-13 18:29:42 443 1

原创 LeetCode 414. 第三大的数-C语言

LeetCode 414. 第三大的数-C语言题目描述解题思路1.设置数组max[3]用于保存前三大的值,初始化为LONG_MIN意为最小值2.遍历数组对前三大的值进行更新3.判断max[2]是否存在,若不存在直接返回max[0]代码int thirdMax(int* nums, int numsSize){ long max[3] = {LONG_MIN,LONG_MIN,LONG_MIN}; for (int i = 0; i < numsSize; i++) {

2021-02-11 21:22:51 779

原创 LeetCode 283. 移动零-C语言

LeetCode 283. 移动零-C语言题目描述解题思路i从0到numsSize-2、j从i+1到numsSize-1,比较i与之后的值,若nums[i]为0,就与之互换。代码void moveZeroes(int* nums, int numsSize){ if (numsSize == 0) { return 0; } int i, j, temp; for (i = 0; i < numsSize - 1; i++) {

2021-02-10 22:09:44 136

原创 LeetCode 268. 丢失的数字-C语言

LeetCode 268. 丢失的数字-C语言题目描述解题思路先求0到n的和,再减去数组每一项,返回结果即可。代码int missingNumber(int* nums, int numsSize){ int i = numsSize; int sum = (1+numsSize)*numsSize/2; while (i--) { sum=sum-nums[i]; } return sum;}...

2021-02-09 20:09:38 243

原创 LeetCode 228. 汇总区间-C语言

LeetCode 228. 汇总区间-C语言题目描述解题思路从数组的位置0出发向右遍历。每次遇到相邻元素之间的差值大于1时,我们就找到了一个区间。遍历完数组之后,就能得到一系列的区间的列表。在遍历过程中,维护下标low和high分别记录区间的起点和终点,对于任何区间都有low≤high。当得到一个区间时,根据low和high的值生成区间的字符串表示。代码char** summaryRanges(int* nums, int numsSize, int* returnSize) { ch

2021-02-08 16:10:33 230 1

原创 LeetCode 219. 存在重复元素Ⅱ-C语言

LeetCode 219. 存在重复元素Ⅱ-C语言题目描述解题思路先排序,再查找。代码struct node { int value; int index;};#define N 100000struct node g[N] = { 0 };int cmp(const void*a, const void*b) { const struct node*a1 = (const struct node*)a; const struct node*b1 = (c

2021-02-05 23:38:07 267

原创 LeetCode 217. 存在重复元素-C语言

LeetCode 217. 存在重复元素-C语言题目描述解题思路在对数字从小到大排序之后,数组的重复元素一定出现在相邻位置中。因此,我们可以扫描已排序的数组,每次判断相邻的两个元素是否相等,如果相等则说明存在重复的元素。代码int cmp(const void* _a, const void* _b) { int a = *(int*)_a, b = *(int*)_b; return a - b;}bool containsDuplicate(int* nums, int

2021-02-04 19:15:16 527

原创 LeetCode 169. 多数元素-C语言

LeetCode 169. 多数元素-C语言题目描述解题思路可以看做好几个不同军队抢夺一个高地,他们一对一消耗,因为有个军队超过了n/2,经过消耗后,他还有人活着。代码int majorityElement(int* nums, int numsSize){ int key = nums[0]; int num = 0; for (int i = 0; i < numsSize; i++) { if (nums[i] == key) {

2021-02-04 11:55:15 198 1

原创 LeetCode 169. 多数元素-C语言

LeetCode 169. 多数元素-C语言题目描述解题思路可以看做好几个不同军队抢夺一个高地,他们一对一消耗,因为有个军队超过了n/2,经过消耗后,他还有人活着。代码int majorityElement(int* nums, int numsSize){ int key = nums[0]; int num = 0; for (int i = 0; i < numsSize; i++) { if (nums[i] == key) {

2021-02-04 11:50:47 133

原创 LeetCode 167. 两数之和 II - 输入有序数组-C语言

LeetCode 167. 两数之和 II - 输入有序数组-C语言题目描述解题思路暴力解法,通过双层循环遍历整个数组,找出两个数之和等于target的两个位置,返回结果。代码int* twoSum(int* numbers, int numbersSize, int target, int* returnSize){ int i, j, flag = 0; for (i = 0; i < numbersSize - 1; i++) { for (j = i

2021-02-03 21:03:51 211

原创 LeetCode 122.买卖股票的最佳时机Ⅱ-C语言

LeetCode 122.买卖股票的最佳时机Ⅱ-C语言题目描述解题思路本题需要计算最大利润,应该采用贪心算法。直接计算每天差价,若因为分区间计算就是升序序列直接相邻天差价的和,直接遍历一次数组,如果相邻两天差价为正,就加到利润中。代码int maxProfit(int* prices, int pricesSize){ if (pricesSize == 0) { return 0; } int profit = 0; for (int i =

2021-02-01 11:08:33 202

原创 LeetCode 121.买卖股票的最佳时机-C语言

LeetCode 121.买卖股票的最佳时机-C语言题目描述解题思路从前向后遍历一次,记录当前遇到的最小值和最大值。注意最大值应该在最小值之后。每次得出最大值和最小值的时候就和maxprofit比较取最大。代码int maxProfit(int* prices, int pricesSize){ if (pricesSize == 0) { return 0; } int minPrice = prices[0]; int maxprofit

2021-01-29 16:43:20 285

原创 LeetCode 119.杨辉三角 II-C语言

LeetCode 119.杨辉三角 II-C语言题目描述解题思路由于算法只要求第k行,因此只需创建一个大小为k+1的数组。代码int* getRow(int rowIndex, int* returnSize){ int cur = 1; int* result = malloc(sizeof(int)*(rowIndex + 1)); for (int i = 0; i <= rowIndex; i++) { result[i] = cur;

2021-01-29 16:10:09 205

原创 LeetCode 118.杨辉三角-C语言

LeetCode 118.杨辉三角-C语言题目描述解题思路代码int** generate(int numRows, int* returnSize, int** returnColumnSizes){ int i, j; /* 定义并分配返回指针的空间 */ int **ret = malloc(sizeof(int *) * numRows); /* 返回杨辉三角的行数 */ *returnSize = numRows; /* 分配杨辉三角中每一

2021-01-27 19:57:15 627

原创 LeetCode 88.合并两个有序数组-C语言

LeetCode 88.合并两个有序数组-C语言题目描述解题思路(合并排序) 从nums1和nums2两个数组最后一位开始比较,大的数填入结果数组最后一位。遍历完,若还剩余一个数组一些元素,则倒序填入剩下的结果数组空下的位置。代码void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n){ int i, j; i = m - 1; //nums1 j = n - 1; //nums2 whi

2021-01-27 19:34:01 166

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除