Leetcode
用C语言做Leetcode
JOJO___
嵌入式,Web,移动开发
展开
-
Leetcode 一维数组的动态和
链接:https://leetcode-cn.com/problems/running-sum-of-1d-array给你一个数组 nums 。数组「动态和」的计算公式为:runningSum[i] = sum(nums[0]…nums[i]) 。请返回 nums 的动态和。示例 1:输入:nums = [1,2,3,4]输出:[1,3,6,10]解释:动态和计算过程为 [1, 1+2, 1+2+3, 1+2+3+4] 。...原创 2021-06-01 11:19:20 · 411 阅读 · 0 评论 -
Leetcode 求1+2+…+n
求 1+2+...+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。示例 1:输入: n = 3输出:6来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/qiu-12n-lcof著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。...原创 2021-05-30 21:49:52 · 404 阅读 · 0 评论 -
Leetcode 好数对的数目
给你一个整数数组 nums 。如果一组数字 (i,j) 满足 nums[i] == nums[j] 且 i < j ,就可以认为这是一组 好数对 。返回好数对的数目。示例 1:输入:nums = [1,2,3,1,1,3]输出:4解释:有 4 组好数对,分别是 (0,3), (0,4), (3,4), (2,5) ,下标从 0 开始来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/number-of-good-pair.原创 2021-05-30 20:12:25 · 444 阅读 · 0 评论 -
Leetcode 左旋转字符串
char* reverseLeftWords(char* s, int n){ int i,j; char *tmp = malloc(sizeof(char) * n); for(i = 0; i < n; i++) { tmp[i] = s[i]; } for(i = 0; s[i+n] != '\0'; i++) { s[i] = s[i+n]; } j = i...原创 2021-05-30 10:13:50 · 176 阅读 · 0 评论 -
Leetcode 删除中间节点
若链表中的某个节点,既不是链表头节点,也不是链表尾节点,则称其为该链表的「中间节点」。假定已知链表的某一个中间节点,请实现一种算法,将该节点从链表中删除。例如,传入节点c(位于单向链表a->b->c->d->e->f中),将其删除后,剩余链表为a->b->d->e->f示例:输入:节点5(位于单向链表4->5->1->9中)输出:不返回任何数据,从链表中删除传入的节点 5,使链表变为4->...原创 2021-05-30 09:25:22 · 127 阅读 · 0 评论 -
Leetcode 统计一个圆中点的数目
/** * Note: The returned array must be malloced, assume caller calls free(). */int* countPoints(int** points, int pointsSize, int* pointsColSize, int** queries, int queriesSize, int* queriesColSize, int* returnSize){ int *ret = mallo...原创 2021-05-29 19:48:58 · 154 阅读 · 0 评论 -
Leetcode 解码异或后的数组
未知 整数数组 arr 由 n 个非负整数组成。经编码后变为长度为 n - 1 的另一个整数数组 encoded ,其中 encoded[i] = arr[i] XOR arr[i + 1] 。例如,arr = [1,0,2,1] 经编码后得到 encoded = [1,2,3] 。给你编码后的数组 encoded 和原数组 arr 的第一个元素 first(arr[0])。请解码返回原数组 arr 。可以证明答案存在并且是唯一的。示例 1:输入:encoded = [1,2,3].原创 2021-05-29 18:41:56 · 113 阅读 · 0 评论 -
Leetcode 数组异或操作
给你两个整数,n 和 start 。数组 nums 定义为:nums[i] = start + 2*i(下标从 0 开始)且 n == nums.length 。请返回 nums 中所有元素按位异或(XOR)后得到的结果。示例 1:输入:n = 5, start = 0输出:8解释:数组 nums 为 [0, 2, 4, 6, 8],其中 (0 ^ 2 ^ 4 ^ 6 ^ 8) = 8 。 "^" 为按位异或 XOR 运算符。来源:力扣(LeetCode)链接:h...原创 2021-05-29 18:23:53 · 141 阅读 · 0 评论 -
Leetcode 矩阵对角线元素的和
int diagonalSum(int** mat, int matSize, int* matColSize){ int i; int ret = 0; for(i = 0; i < matSize; i++) { ret += mat[i][i]; ret += mat[i][matSize - 1 -i]; } return (matSize % 2 == 0) ? ret : ret -...原创 2021-05-27 21:28:02 · 102 阅读 · 0 评论 -
Leetcode 二进制链表转整数
给你一个单链表的引用结点 head。链表中每个结点的值不是 0 就是 1。已知此链表是一个整数数字的二进制表示形式。请你返回该链表所表示数字的 十进制值 。示例 1:输入:head = [1,0,1]输出:5解释:二进制数 (101) 转化为十进制数 (5)好久没来水题了,嘎嘎/** * Definition for singly-linked list. * struct ListNode { * int val; * struct List.原创 2021-05-27 21:04:43 · 100 阅读 · 0 评论 -
Leetcode 复写零
给你一个长度固定的整数数组arr,请你将该数组中出现的每个零都复写一遍,并将其余的元素向右平移。注意:请不要在超过该数组长度的位置写入元素。要求:请对输入的数组就地进行上述修改,不要从函数返回任何东西。示例 1:输入:[1,0,2,3,0,4,5,0]输出:null解释:调用函数后,输入的数组将被修改为:[1,0,0,2,3,0,0,4]示例 2:输入:[1,...原创 2019-09-16 22:15:28 · 136 阅读 · 0 评论 -
Leetcode 爬楼梯
题目:爬楼梯假设你正在爬楼梯。需要 n阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?法1:我喜欢递归,虽然慢,超时了,但是简洁。int count = 0;void __climbStairs(int n) { if(n <= 0) { if(n == 0) count++; ...原创 2019-03-25 19:51:16 · 211 阅读 · 0 评论 -
Leetcode 打家劫舍
题目 打家劫舍你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [1,2,3,1]输出: 4解释: 偷窃 1 号房屋 (金额 =...原创 2019-03-29 14:45:18 · 151 阅读 · 0 评论 -
Leetcode 报数
题目 报数报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:1. 12. 113. 214. 12115. 1112211被读作"one 1"("一个一") , 即11。11 被读作"two 1s"("两个一"), 即21。21 被读作"one 2", "one 1"("一个二"...原创 2019-03-31 10:01:46 · 336 阅读 · 0 评论 -
Leetcode 杨辉三角
Leetcode 杨辉三角给定一个非负整数numRows,生成杨辉三角的前numRows行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 5输出:[ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1]]二维数组指针的分配#include <stdio.h>#i...原创 2019-04-07 09:38:28 · 180 阅读 · 0 评论 -
Leetcode 平衡二叉树
给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点的左右两个子树的高度差的绝对值不超过1。示例 1:给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7返回 true 。示例 2:给定二叉树 [1,2,2,3,3,null,null...原创 2019-04-13 08:31:10 · 124 阅读 · 0 评论 -
Leetcode 丑数
编写一个程序判断给定的数是否为丑数。丑数就是只包含质因数2, 3, 5的正整数。示例 1:输入: 6输出: true解释: 6 = 2 ×3示例 2:输入: 8输出: true解释: 8 = 2 × 2 ×2示例3:输入: 14输出: false 解释: 14 不是丑数,因为它包含了另外一个质因数7说明:1是丑数。 输入不会超...原创 2019-04-17 07:19:50 · 215 阅读 · 0 评论 -
Leetcode 排列硬币
你总共有n枚硬币,你需要将它们摆成一个阶梯形状,第k行就必须正好有k枚硬币。给定一个数字n,找出可形成完整阶梯行的总行数。n是一个非负整数,并且在32位有符号整型的范围内。示例 1:n = 5硬币可排列成以下几行:¤¤ ¤¤ ¤因为第三行不完整,所以返回2.示例 2:n = 8硬币可排列成以下几行:¤¤ ¤¤ ¤ ¤¤ ¤...原创 2019-04-30 08:04:54 · 191 阅读 · 0 评论 -
Leetcode 构造矩形
作为一位web开发者, 懂得怎样去规划一个页面的尺寸是很重要的。 现给定一个具体的矩形页面面积,你的任务是设计一个长度为 L 和宽度为 W 且满足以下要求的矩形的页面。要求:1. 你设计的矩形页面必须等于给定的目标面积。2. 宽度 W 不应大于长度 L,换言之,要求 L >= W 。3. 长度 L 和宽度 W 之间的差距应当尽可能小。你需要按顺序输出你设计的页面的长度 L...原创 2019-05-03 07:13:10 · 140 阅读 · 0 评论 -
Leetcode 移动零
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。 尽量减少操作次数。思路:冒泡法#define swap(a,b) do{int _x; _x = a; a = b; b = _x;}while(0)...原创 2019-05-04 18:59:35 · 90 阅读 · 0 评论 -
Leetcode 分发饼干
假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i ,都有一个胃口值gi ,这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j ,都有一个尺寸 sj。如果 sj >= gi,我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。注意:你可以假设胃口值为正。一...原创 2019-05-05 08:15:44 · 177 阅读 · 0 评论 -
Leetcode 快乐数
编写一个算法来判断一个数是不是“快乐数”。一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。示例:输入: 19输出: true解释: 12 + 92 = 8282 + 22 = 6862 + 82 = 10012 + 02 + ...原创 2019-05-12 08:13:11 · 128 阅读 · 0 评论 -
Leetcode 缺失数字
给定一个包含 0, 1, 2, ..., n中n个数的序列,找出 0 .. n中没有出现在序列中的那个数。示例 1:输入: [3,0,1]输出: 2示例2:输入: [9,6,4,2,3,5,7,0,1]输出: 8说明:你的算法应具有线性时间复杂度。你能否仅使用额外常数空间来实现?思路:暴力法int missingNumber(int* n...原创 2019-05-12 10:13:11 · 165 阅读 · 0 评论 -
Leetcode 种花问题
假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花卉不能种植在相邻的地块上,它们会争夺水源,两者都会死去。给定一个花坛(表示为一个数组包含0和1,其中0表示没种植花,1表示种植了花),和一个数n。能否在不打破种植规则的情况下种入n朵花?能则返回True,不能则返回False。示例 1:输入: flowerbed = [1,0,0,0,1], n = 1输出...原创 2019-05-14 08:15:54 · 231 阅读 · 0 评论 -
Leetcode 分糖果
给定一个偶数长度的数组,其中不同的数字代表着不同种类的糖果,每一个数字代表一个糖果。你需要把这些糖果平均分给一个弟弟和一个妹妹。返回妹妹可以获得的最大糖果的种类数。示例 1:输入: candies = [1,1,2,2,3,3]输出: 3解析: 一共有三种种类的糖果,每一种都有两个。 最优分配方案:妹妹获得[1,2,3],弟弟也获得[1,2,3]。这样使妹妹获得糖果的种类数...原创 2019-05-16 21:13:45 · 196 阅读 · 0 评论 -
Leetcode 各位相加
给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。示例:输入: 38输出: 2 解释: 各位相加的过程为:3 + 8 = 11, 1 + 1 = 2。 由于2 是一位数,所以返回 2。进阶:你可以不使用循环或者递归,且在 O(1) 时间复杂度内解决这个问题吗?思路:找规律,O(1),0msf(0) = 0f(1) = 1 f...原创 2019-05-23 08:15:59 · 240 阅读 · 0 评论 -
Leetcode 矩形重叠
矩形以列表 [x1, y1, x2, y2] 的形式表示,其中 (x1, y1) 为左下角的坐标,(x2, y2) 是右上角的坐标。如果相交的面积为正,则称两矩形重叠。需要明确的是,只在角或边接触的两个矩形不构成重叠。给出两个矩形,判断它们是否重叠并返回结果。示例 1:输入:rec1 = [0,0,2,2], rec2 = [1,1,3,3]输出:true示例 2:...原创 2019-05-28 08:06:51 · 264 阅读 · 0 评论 -
Leetcode 两地调度
公司计划面试 2N 人。第 i 人飞往 A 市的费用为 costs[i][0],飞往 B 市的费用为 costs[i][1]。返回将每个人都飞到某座城市的最低费用,要求每个城市都有 N 人抵达。示例:输入:[[10,20],[30,200],[400,50],[30,20]]输出:110解释:第一个人去 A 市,费用为 10。第二个人去 A 市,费用为 30。第三个人...原创 2019-05-31 08:33:57 · 262 阅读 · 0 评论 -
Leetcode 相对名次
给出 N 名运动员的成绩,找出他们的相对名次并授予前三名对应的奖牌。前三名运动员将会被分别授予 “金牌”,“银牌” 和“ 铜牌”("Gold Medal", "Silver Medal", "Bronze Medal")。(注:分数越高的选手,排名越靠前。)示例 1:输入: [5, 4, 3, 2, 1]输出: ["Gold Medal", "Silver Medal", "Bron...原创 2019-06-16 17:04:45 · 312 阅读 · 0 评论 -
Leetcode 132模式
给定一个整数序列:a1, a2, ..., an,一个132模式的子序列 ai, aj, ak 被定义为:当 i < j < k 时,ai < ak < aj。设计一个算法,当给定有 n 个数字的序列时,验证这个序列中是否含有132模式的子序列。注意:n 的值小于15000。示例1:输入: [1, 2, 3, 4]输出: False解释: 序列中不存在1...原创 2019-07-08 08:01:00 · 278 阅读 · 0 评论 -
Leetcode 拼写单词
给你一份『词汇表』(字符串数组) words 和一张『字母表』(字符串) chars。假如你可以用 chars 中的『字母』(字符)拼写出 words 中的某个『单词』(字符串),那么我们就认为你掌握了这个单词。注意:每次拼写时,chars 中的每个字母都只能用一次。返回词汇表 words 中你掌握的所有单词的 长度之和。示例 1:输入:words = ["cat","b...原创 2019-09-06 21:22:48 · 316 阅读 · 0 评论 -
Leetcode 斐波那契数
题目 斐波那契数斐波那契数,通常用F(n) 表示,形成的序列称为斐波那契数列。该数列由0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:F(0) = 0, F(1)= 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.给定N,计算F(N)。int fib(int N) { int a, b; ...原创 2019-03-25 20:01:04 · 175 阅读 · 0 评论 -
Leetcode 反转链表
题目 反转链表反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL递归法struct ListNode* ret;int buf;int count;void __reverseList(struct ListNode* head) { ...原创 2019-03-27 15:00:46 · 185 阅读 · 0 评论 -
Leetcode 移除元素
Leetcode 移除元素给定一个数组 nums和一个值 val,你需要原地移除所有数值等于val的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度...原创 2019-04-06 08:18:16 · 135 阅读 · 0 评论 -
Leetcode 环形链表
Leetcode 环形链表给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。快慢指针,相遇即是环型...原创 2019-04-09 07:55:10 · 187 阅读 · 0 评论 -
Leetcode 最小栈
Leetcode 最小栈设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x)-- 将元素 x 推入栈中。 pop()-- 删除栈顶的元素。 top()-- 获取栈顶元素。 getMin() -- 检索栈中的最小元素。示例:MinStack minStack = new MinStack();minStack.push(-2)...原创 2019-04-10 07:06:37 · 196 阅读 · 0 评论 -
Leetcode 路径总和
给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明:叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 ...原创 2019-04-12 08:18:56 · 152 阅读 · 0 评论 -
Leetcode 对称二叉树
给定一个二叉树,检查它是否是镜像对称的。例如,二叉树[1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \3 4 4 3但是下面这个[1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3递归实现bool __isSym...原创 2019-04-13 06:50:49 · 107 阅读 · 0 评论 -
Leetcode 全排列
给定一个没有重复数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]网上借鉴的,递归法,有点难理解。int d(int a){ int i; int ret = 1; for(i = ...原创 2019-04-15 07:35:37 · 97 阅读 · 0 评论 -
Leetcode 相交链表
编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:在节点 c1 开始相交。示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Reference of the node with value = 8输入解释:相交节点的...原创 2019-04-20 08:37:29 · 150 阅读 · 0 评论