【《LeetCode力扣练习》第7题 C语言版 (做出来就行,别问我效率。。。。)】教程文章相关的互联网学习教程文章

leetcode--C语言 指针【代码】

虽然C语言用了挺久,自以为指针也学的不错。最近都在写O-C,最近开始重拾C语言,发现自己关于C中的堆栈并没有完全理解。C中的函数malloc:struct ListNode* head = (struct ListNode *)malloc(sizeof(struct ListNode)); malloc()从堆里面获得空间,将这块堆空间的地址赋值给指针。也就是说函数返回的指针是指向堆里面的一块内存。操作系统中有一个记录空闲内存地址的链表。当操作系统收到程序的申请时,就会遍历该链表,然后就...

每日LeetCode - 145. 二叉树的后序遍历(C语言)【代码】【图】

C语言#define NULL ((void *)0) /*** Definition for a binary tree node.*/struct TreeNode {int val;struct TreeNode *left;struct TreeNode *right; };/*** Note: The returned array must be malloced, assume caller calls free().*/int* postorderTraversal(struct TreeNode* root, int* returnSize){int* res = (int*)malloc(sizeof(res)*501);*returnSize=0;postorder(root, res, returnSize);return res; }void postorder...

《LeetCode力扣练习》第6题 C语言版 (做出来就行,别问我效率。。。。)【代码】【图】

库你急哇,哈集美马戏特~~ 生气是无能的表现,这道题真得让我很生气!!!! 我以前觉得我不笨,我现在觉得我以前觉得错了 本次采用官方题解1,思路是真的好,吊打我的2维数组,感觉看了官方的思路之后,它的代码竟然会动(-_-) 在这里还要感谢一下帮助我解决内存溢出的问题的大佬,ZHYyyds(@-@) 先写一下执行错误吧,有遇到的同学可以想一下为什么result在malloc的时候,长度要写成len+1,这就是问题的关键AddressSanitizer: h...

LeetCode刷题笔记(简单)---数组中两元素的最大乘积(C语言,两种思路)【代码】【图】

题目如下: 第一种思路当然是万能的暴力破解法: int maxProduct(int* nums, int numsSize){int max=0;for(int i=0;i<numsSize;i++){for(int j=i+1;j<numsSize;j++){max = max>(nums[i]-1)*(nums[j]-1)?max:(nums[i]-1)*(nums[j]-1);}}return max; }第二种思路也很简单,也就是先对数组进行排序,这样就能找到最大的元素和第二大的元素,分别减一相乘即可得最终结果。 正巧昨天学习了库函数qsort(),可以派上用场了。 昨天写的文章...

LeetCode 189. 旋转数组 C语言解【代码】【图】

189. 旋转数组给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。 进阶: 尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。 你可以使用空间复杂度为 O(1) 的 原地 算法解决这个问题吗? 示例 1: 输入: nums = [1,2,3,4,5,6,7], k = 3 输出: [5,6,7,1,2,3,4] 解释: 向右旋转 1 步: [7,1,2,3,4,5,6] 向右旋转 2 步: [6,7,1,2,3,4,5] 向右旋转 3 步: [5,6,7,1,2,3,4]解法1 一次旋转一次,数组最后...

每日LeetCode - 27. 移除元素(C语言)【代码】【图】

C语言//双指针 int removeElement(int* nums, int numsSize, int val){int i=0,j;for (int j=0;j<numsSize;j++){if(nums[j]!=val){nums[i]=nums[j];i++;}}return i; }

每日LeetCode - 21. 合并两个有序链表(C语言)【代码】【图】

C语言 C语言和Python的方法是一样的,所以就C语言了,效率上快很多。/*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/ #define NULL ((void *)0)struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2){if (l1 == NULL)return l2;if (l2 == NULL)return l1;if (l1->val > l2->val){l2->next=mergeTwoLists(l1,l2->next);return l2;}else{l1->nex...

LeetCode刷题笔记(简单)---找到最高海拔(C语言)【代码】【图】

题目如下: 这题题目意思也比较明确,初始海拔为0,然后得到的新数组来自于与gain数组的和。 第一次提交: int largestAltitude(int* gain, int gainSize){int *res = (int *)malloc(sizeof(int)*(gainSize+1));res[0]=0;int maxnum=0;for(int i=1;i<gainSize+1;i++){res[i]=res[i-1]+gain[i-1];}for(int i=0;i<gainSize+1;i++){maxnum=maxnum>res[i]?maxnum:res[i];}return maxnum;}这里我用了两个for循环,是想要比较运行时间和...

LeetCode刷题笔记(简单)---有多少小于当前数字的数字(C语言)【代码】【图】

本题很简单了。 int* smallerNumbersThanCurrent(int* nums, int numsSize, int* returnSize){int* res = malloc(sizeof(int) * numsSize);int count=0;for(int i=0;i<numsSize;i++){ for(int j=0;j<numsSize;j++){if(nums[j]<nums[i])count++; }res[i]=count;count=0;//计数清零}*returnSize = numsSize;return res; }然后看了一下官方题解,发现跟我写的差不多,只是有些行代码放的位置不一样而已。

《LeetCode力扣练习》第7题 C语言版 (做出来就行,别问我效率。。。。)【代码】

库你急哇,哈集美马戏特~~ 转字符串的是不是因为没有一颗算法的心 二十天河东,二十天河西,莫欺少年穷… 二十天前我卡一下午,二十天之后我一遍成功 关于为什么要设置这样的溢出判定,官方写的更加清楚,上链接: https://leetcode-cn.com/problems/reverse-integer/solution/zheng-shu-fan-zhuan-by-leetcode/ 题目: 给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。 如果反转后整数超过 32 位的有符号整数...

《LeetCode力扣练习》第15题 C语言版 (做出来就行,别问我效率。。。。)【代码】

库你急哇,哈集美马戏特~~ 一题二写,三数之和,题解四瞅五瞄六瞧,水平还七上八下九流,十分辣鸡。 十推九敲,八种思路,用光七情六欲五感,在这里四覆三翻二挠,一拳爆屏。 十赢九输,赢了八千,七百六十五万,打了四个三带二,爽的一批 一天两道,三月打卡,刷的四分五裂六离,现在是七零八落九散,十分难受。 一顿操作猛如虎,点击提交超时了。 二话不说翻题解,评论区里全人才。 反反复复终得道,再次尝试却报错。 —————...