C语言
个人笔记
错落の年华
这个作者很懒,什么都没留下…
展开
-
Leetcode编程C++之1704. 判断字符串的两半是否相似
Leetcode编程C++之1704. 判断字符串的两半是否相似两个字符串 相似 的前提是它们都含有相同数目的元音(‘a’,‘e’,‘i’,‘o’,‘u’,‘A’,‘E’,‘I’,‘O’,‘U’)。注意,s 可能同时含有大写和小写字母。给你一个偶数长度的字符串 s。将其拆分成长度相同的两半,前一半为 a ,后一半为 b。如果 a 和 b 相似,返回 true;否则,返回 false。原创 2022-11-11 15:20:37 · 386 阅读 · 0 评论 -
Leetcode编程C++之1678. 设计 Goal 解析器
Leetcode编程C++之1678. 设计 Goal 解析器:command 由 “G”、“()” 和/或 “(al)” 按某种顺序组成。Goal 解析器会将 “G” 解释为字符串 “G”、“()” 解释为字符串 “o” ,“(al)” 解释为字符串 “al”。原创 2022-11-06 10:30:11 · 207 阅读 · 0 评论 -
Leetcode编程C语言之1668. 最大重复子字符串
Leetcode编程C语言之1668. 最大重复子字符串:给你一个字符串 sequence ,如果字符串 word 连续重复 k 次形成的字符串是 sequence 的一个子字符串,那么单词 word 的 重复值为 k。单词 word 的 最大重复值 是单词 word 在 sequence 中最大的重复值。如果 word 不是 sequence 的子串,那么重复值 k 为 0。给你一个字符串 sequence 和 word ,请你返回 最大重复值 k。原创 2022-11-03 10:46:31 · 186 阅读 · 0 评论 -
Leetcode编程C语言之1822. 数组元素积的符号
已知函数 signFunc(x) 将会根据 x 的正负返回特定值:如果 x 是正数,返回 1 。如果 x 是负数,返回 -1 。如果 x 是等于 0 ,返回 0 。原创 2022-10-27 18:47:24 · 440 阅读 · 0 评论 -
Leetcode编程C++之934. 最短的桥
岛 是由四面相连的 1 形成的一个最大组,即不会与非组内的任何其他 1 相连。grid 中 恰好存在两座岛。给你一个大小为 n x n 的二元矩阵 grid ,其中 1 表示陆地,0 表示水域。你可以将任意数量的 0 变为 1 ,以使两座岛连接起来,变成 一座岛。返回必须翻转的 0 的最小数目。原创 2022-10-24 10:46:15 · 216 阅读 · 0 评论 -
【C语言 LeetCode 116】填充每个节点的下一个右侧节点指针
广度优先搜索(层次遍历)解决填充每个节点的下一个右侧节点指针题目给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:struct Node { int val; struct Node *left; struct Node *right; struct Node *next;};填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有 ne原创 2021-07-13 11:28:08 · 228 阅读 · 0 评论 -
【LeetCode 695】岛屿的最大面积
深度优先搜索求解岛屿的最大面积思路:从二维数组起始位置开始搜索,在遇到其值为1时,搜索其水平或垂直方向,如果为1,则面积加1,遍历该位置同时,将其值修改为0,以免重复搜索;如果为0,则进行回溯。代码:/*********************深度优先搜索代码*********************/void dfs(int **grid, int x, int y, int n, int m, int *len){ if(grid[x][y]) { i原创 2021-07-12 11:22:11 · 49 阅读 · 0 评论 -
【C语言 leetcode 7】整数反转
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0示例 1:输入:x = 123输出:321示例 2:输入:x = -123输出:-321该题的难点在于需要判断是否溢出,自己刚开始也忽略了这个判断,导致代码执行出错!!!C语言代码如下:int reverse(int x){ int n,i,t=0,max,min; max=pow(2,31)-1;原创 2021-05-03 21:51:20 · 213 阅读 · 0 评论 -
[C语言 LeetCode 224] 用栈实现基本计算器
实现一个基本的计算器来计算一个简单的字符串表达式 s 的值。示例 1:输入:s = " 2-1 + 2 "输出:3示例2:输入:s="(1+(4+5+2)-3)+(6+8)"输出:23示例3:输入:s=“2147483647”输出:2147483647示例4:输入:s="-2+ 1"输出:-1示例5:输入:s=“1-11”输出:-10C语言计算模块代码如下:#define max 1000int calculate(char * s){ char stack1原创 2021-03-10 18:46:04 · 163 阅读 · 0 评论 -
二叉树最小深度非递归算法
给定一个二叉树,找出其最小深度(最小深度是从根节点到最近叶子节点的最短路径上的节点数量)示例:给定二叉树 [3,9,20,null,null,15,7], 7 / \ 9 6 / \ 15 8 它的最小深度为2. typedef struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right;}int minDepth(TreeNod原创 2020-08-21 17:22:54 · 398 阅读 · 0 评论 -
[LeecCode 201 C语言] 暴力方式解决给定数字范围按位与问题
数字范围按位与:暴力方式代码给定范围 [m, n],其中 0 <= m <= n <= 2147483647返回此范围内所有数字的按位与(包含 m, n 两端点)示例 1:输入: [5,7]输出:示例 2:输入: [0,1]输出: 0C语言:按位与运算模块程序代码:int rangeBitwiseAnd(int m, int n){ int i=m; //记录初始m值 while(i<n)原创 2020-08-23 16:24:01 · 125 阅读 · 0 评论 -
[C语言 LeetCode657] 机器人是否能够回原点
C语言:机器人是否能够回原点在二维平面上,有一个机器人从原点 (0, 0) 开始。给出它的移动顺序,判断这个机器人在完成移动后是否在 (0, 0) 处结束。移动顺序由字符串表示。字符 move[i] 表示其第 i 次移动。机器人的有效动作有 R(右),L(左),U(上)和 D(下)。如果机器人在完成所有动作后返回原点,则返回 true。否则,返回 false示例 1:输入: “UD”输出: true示例 2:输入: “LL”输出: falsebool judgeCircle(char *原创 2020-08-28 16:35:02 · 101 阅读 · 0 评论 -
[C语言 Leetcode 557] 反转字符串中的单词
char * reverseWords(char * s){ int i,j,k,t,n=0; for(i=0;s[i]!='\0';++i) { if(s[i]!=' ') ++n; else { j=i-n; k=i-1; n=0; while(j<k) {原创 2020-08-30 22:31:46 · 296 阅读 · 0 评论 -
C语言字符串替换空格
请实现一个函数,把字符串 s 中的每个空格替换成"%20"。示例 1:输入:s = “We are happy.”输出:“We%20are%20happy.”char* replaceSpace(char* s){ char *t=(char *)malloc(max*sizeof(char)); int i,j=0; for (i=0;s[i]!='\0';++i) { if(s[i]==' ') { t[j原创 2020-09-08 22:17:18 · 624 阅读 · 0 评论 -
[C语言 LeetCode 剑指 Offer 20] 表示数值的字符串
实现一个函数用来判断字符串是否表示数值(包括整数和小数)例如:字符串"+100"、“5e2”、"-123"、“3.1416”、"-1E-16"、"0123"等表示数值,“12e”、“1a3.14”、“1.2.3”、"±5"及"12e+5.4"都不是判断是否为数字型字符串模块C代码:bool isNumber(char* s){ int i=0,n=0,k=0,t=0; for(i=0;s[i]==' ';++i); //跳过字符串开头空格 if(s[i]原创 2020-09-10 16:59:17 · 159 阅读 · 0 评论 -
[ C语言 LeetCode 226 ] 翻转二叉树
翻转一棵二叉树。示例:输入: 5 / \ 7 2 / \ / \ 9 6 3 1输出: 5 / \ 7 2 / \ / \ 9 6 3 1(基于后序遍历)交换子树模块C代码:typedef struct TreeNode { int data; struct TreeNode *left; struct TreeNode *right;}TreeNode;原创 2020-09-16 16:17:35 · 169 阅读 · 0 评论 -
[C语言 LeetCode 剑指 Offer 53 - II] 0~n-1中缺失的数字
一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。示例 1:输入: [0,1,3]输出: 2示例 2:输入: [0,1,2,3,4,5,6,7,9]输出: 8查找模块C代码:int missingNumber(int* nums, int numsSize){ int i=0; while(i<numsSize&&nums[i]==i)原创 2020-09-17 16:09:50 · 104 阅读 · 0 评论 -
[ C语言 LeetCode 404 ] 计算二叉树左叶子之和
计算给定二叉树的所有左叶子之和。示例: 3 / \ 9 20 / \ 15 7在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24计算模块C语言代码:int flag; //定义全局变量,用于判断左右子树标志位int sumOfLeftLeaves(struct TreeNode* root){ int Le,Re; if(root==NULL) return 0; if(flag&am原创 2020-09-19 16:24:02 · 424 阅读 · 0 评论 -
用C语言解决:把二叉搜索(排序)树转换为累加树的问题
给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree),使得每个节点的值是原来的节点值加上所有大于它的节点值之和例如:输入: 原始二叉搜索树: 2 / \ 0 3 / \ -4 1输出: 转换为累加树: 5 / \ 6 3 / \ 2 6思想:根据二叉排序树的特点,采用右根原创 2020-09-21 22:38:24 · 156 阅读 · 0 评论 -
[ C语言 LeetCode 235 ] 二叉搜索树的最近公共祖先非递归算法
给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]示例 1:输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 8输出: 6解释: 节点 2 和节点 8 的最近公原创 2020-09-27 16:13:38 · 608 阅读 · 0 评论 -
[ C语言 LeetCode 617 ] 合并二叉树的递归算法
617. 合并二叉树给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。示例 1:输入: Tree 1 Tree 2 1 2原创 2020-09-27 16:17:49 · 134 阅读 · 0 评论 -
[ C语言 LeetCode 117 ] 基于层次遍历算法(非递归)实现填充每个节点的下一个右侧节点指针 II
填充每个节点的下一个右侧节点指针给定一个二叉树typedef struct BTNode { int val; struct BTNode *left; struct BTNode *right; struct BTNode *next;}BTNode;填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有 next 指针都被设置为 NULL。示例:输入:root = [1,2,3,4,原创 2020-09-28 18:02:23 · 135 阅读 · 0 评论 -
[C语言 LeetCode 503] 下一个更大元素 II
给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素),输出每个元素的下一个更大元素。数字 x 的下一个更大的元素是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出 -1示例 :输入: [1,2,1]输出: [2,-1,2]解释: 第一个 1 的下一个更大的数是 2;数字 2 找不到下一个更大的数;第二个 1 的下一个最大的数需要循环搜索,结果也是 2。C语言代码如下:int* nextGreaterElements(i原创 2021-03-06 21:39:54 · 117 阅读 · 1 评论 -
[C语言 LeetCode 496] 下一个更大元素 I
给你两个 没有重复元素 的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集。请你找出 nums1 中每个元素在 nums2 中的下一个比其大的值。nums1 中数字 x 的下一个更大元素是指 x 在 nums2 中对应位置的右边的第一个比 x 大的元素。如果不存在,对应位置输出 -1 。示例 1:输入: nums1 = [4,1,2], nums2 = [1,3,4,2].输出: [-1,3,-1]解释:对于 num1 中的数字 4 ,你无法在第二个数组中找到下一个更原创 2021-03-06 22:00:28 · 213 阅读 · 1 评论