
C语言刷题
五毛变向.
大二菜鸡 看摆烂代码 品摆烂人生。
展开
-
Leedcode 【62】 不同路径 C语言
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish”)。问总共有多少条不同的路径?输入:m = 3, n = 7输出:28示例 2:输入:m = 3, n = 2输出:3解释:从左上角开始,总共有 3 条路径可以到达右下角。1. 向右 -> 向下 -> 向下2. 向下 -> 向下 -> 向右3. 向下 -> 向右原创 2022-04-17 21:25:38 · 664 阅读 · 1 评论 -
Leetcode 【206】 反转链表 C语言
输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]输入:head = [1,2]输出:[2,1]示例 3:输入:head = []输出:[]简单题 不用画图就出来了属于是 作业好多数据结构的文章还在创作中struct ListNode* reverseList(struct ListNode* head) { struct ListNode* prev = NULL; struct ListNode* cur = head;...原创 2022-04-16 23:32:30 · 820 阅读 · 2 评论 -
Leetcode 【203】 移除链表元素 C语言
给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。示例 1:输入:head = [1,2,6,3,4,5,6], val = 6输出:[1,2,3,4,5]示例 2:输入:head = [], val = 1输出:[]示例 3:输入:head = [7,7,7,7], val = 7输出:[]思路:对于这个题用暴力解法来判断很多情况,来解决。但是昨天学到了可以用带一个头结点来取消这个对于原创 2022-04-15 23:44:43 · 1207 阅读 · 1 评论 -
Leetcode 【19】 删除链表倒数第N个节点 C语言
给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。示例 1:输入:head = [1,2,3,4,5], n = 2输出:[1,2,3,5]示例 2:输入:head = [1], n = 1输出:[]示例 3:输入:head = [1,2], n = 1输出:[1]这个题我读完之后立马想到就是先遍历一遍链表统计节点个数,最后通过n的判断找到倒数第N的前驱节点进行删除,通过了,但是想到了几天前那个 876 删除中间节点那个可以使用双指针来操作,但是原创 2022-04-14 13:44:23 · 1085 阅读 · 0 评论 -
Leetcode 【225】 用队列实现栈 C语言
请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。实现 MyStack 类:void push(int x) 将元素 x 压入栈顶。int pop() 移除并返回栈顶元素。int top() 返回栈顶元素。boolean empty() 如果栈是空的,返回 true ;否则,返回 false 。注意:你只能使用队列的基本操作 —— 也就是push to back、peek/pop from front、size.原创 2022-04-13 22:09:23 · 813 阅读 · 2 评论 -
Leetcode 【876】 链表的中间节点 C语言
给定一个头结点为 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例 1:输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 ListNode 类型的对象 ans,这样:ans.val = 3, ans.next.val = 4, ans.next.next.val = 5, 以及 ans.next.next.next =原创 2022-03-30 23:52:39 · 146 阅读 · 1 评论 -
Leetcode 【88】 合并两个有序数组 C语言
给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。示例 1:输入:nums1 = [1,2,原创 2022-03-30 23:40:51 · 1015 阅读 · 0 评论 -
Leetcode 【26】 删除有序数组的重复项 C语言
给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。由于在某些语言中不能改变数组的长度,所以必须将结果放在数组nums的第一部分。更规范地说,如果在删除重复项之后有 k 个元素,那么nums的前 k 个元素应该保存最终结果。将最终结果插入nums 的前 k 个位置后返回 k 。不要使用额外的空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。int re...原创 2022-03-30 16:14:19 · 1393 阅读 · 0 评论 -
Leetcode 【989】数组形式的整数加法 C语言
整数的 数组形式 num是按照从左到右的顺序表示其数字的数组。例如,对于 num = 1321 ,数组形式是 [1,3,2,1] 。给定 num ,整数的 数组形式 ,和整数 k ,返回 整数 num + k 的 数组形式 。示例 1:输入:num = [1,2,0,0], k = 34输出:[1,2,3,4]解释:1200 + 34 = 1234示例 2:输入:num = [2,7,4], k = 181输出:[4,5,5]解释:274 + 181 = 455示例 ...原创 2022-03-30 16:02:43 · 850 阅读 · 0 评论 -
Leedcode 【27】 移除元素 C语言 2022-03-19
27.移除元素解法一int removeElement(int* nums, int numsSize, int val){ int left=0; for(int right=0;right<numsSize;right++){ if(val != nums[right]){ nums[left]=nums[right]; left++; } } return原创 2022-03-19 23:03:39 · 1033 阅读 · 1 评论 -
Leetcode【面试题 17.04 】【189】 C语言 2022-3-10
解法一int missingNumber(int* nums, int numsSize){ int ret = 0; for(int i = 0; i < numsSize; i++){ ret ^= i + 1; ret ^=nums[i]; } return ret;}先对1~numbsize个数字进行异或把这个结果在交给目标数组进行异或,相同的数字就变成0了,0于任何数异或就是他本身,因为异或有交换律所以异或顺序无..原创 2022-03-11 00:12:57 · 550 阅读 · 0 评论 -
牛客网【JZ53】Leetcode【面试题 05.06】C语言 2022-02-24
1、给定一个长度为 n 的非降序数组和一个非负数整数 k ,要求统计 k 在数组中出现的次数数据范围: 0≤n≤1000 , 0≤k≤100 ,数组中每个元素的值满足 0≤val≤100示例:输入:[1,2,3,3,3,3,4,5],3返回值:4int get(int* data, int len, int k, int flag) { int left = 0; int right = len - 1; int mid = 0; while (left <= right) .原创 2022-02-26 23:25:58 · 386 阅读 · 0 评论 -
牛客网 【HJ34】 Leetcode【724】C语言 2022-02-26
1、Lily上课时使用字母数字图片教小朋友们学习英语单词,每次都需要把这些图片按照大小(ASCII码值从小到大)排列收好。请大家给Lily帮忙,通过C语言解决。输入描述:Lily使用的图片包括 "A" 到 "Z" 、 "a" 到 "z" 、 "0" 到 "9" 。输入字母或数字个数不超过 1024 。输出描述:Lily的所有图片按照从小到大的顺序输出#include <stdio.h>int main(){ char str[1024] = { 0 }; while (g.原创 2022-02-27 01:25:00 · 363 阅读 · 0 评论 -
Leetcode【349】【747】C语言 2022-02-25
1、给定两个数组,编写一个函数来计算它们的交集。示例:输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2]输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出:[9,4]int* intersection(int* nums1, int nums1Size, int* nums2, int nums2Size, int* returnSize) { static int arr[1000]; *returnSize = 0;.原创 2022-02-27 01:20:26 · 267 阅读 · 0 评论 -
Leetcode【645】牛客网【OR141】C语言 2022-2-23
1.集合 s 包含从 1 到 n 的整数。不幸的是,因为数据错误,导致集合里面某一个数字复制了成了集合里面的另外一个数字的值,导致集合 丢失了一个数字 并且 有一个数字重复 。给定一个数组 nums 代表了集合 S 发生错误后的结果。请你找出重复出现的整数,再找到丢失的整数,将它们以数组的形式返回。输入:nums = [1,2,2,4]输出:[2,3]解法一int* findErrorNums(int* nums, int numsSize, int* returnSize) { *re原创 2022-02-24 00:15:10 · 658 阅读 · 0 评论 -
牛客网【HJ97】【JZ11】C语言 2022-02-21
1、首先输入要输入的整数个数 n ,然后输入 n 个整数。输出为 n 个整数中负数的个数,和所有正整数的平均值,结果保留一位小数。注意: 0 即不是正整数,也不是负数,不计入计算; 本题有多组输入用例。输入描述:首先输入一个正整数 n ,然后输入 n 个整数。示例:输入: 51 2 3 4 5101 2 3 4 5 6 7 8 9 0输出: 0 3.00 5.0#include <stdio.h>#include <stdlib.h>int main.原创 2022-02-23 00:28:52 · 686 阅读 · 0 评论 -
牛客网【HJ73】【HJ100】C语言 2022-02-20
1.根据输入的日期,计算是这一年的第几天。输入保证年份为4位数且日期合法。输入描述:输入一行,每行空格分割,分别是年,月,日。输出描述:输出是这一年的第几天示例:输入:2012 12 31 输入:1982 3 4输出:366 输出:63#include <stdio.h>int Isleapyear(int year) { if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) { retur.原创 2022-02-22 23:42:48 · 1101 阅读 · 0 评论 -
牛客网【HJ76】【JZ17】C语言 2022-02-19
1.验证尼科彻斯定理,即:任何一个整数m的立方都可以写成m个连续奇数之和。例如:1^3=12^3=3+53^3=7+9+114^3=13+15+17+19输入一个正整数m(m≤100),将m的立方写成m个连续奇数之和的形式输出。本题含有多组输入数据。数据范围:数据组数:1\le t\le 5\1≤t≤5 ,1\le m\le 100\1≤m≤100进阶:时间复杂度:O(1)\O(1),空间复杂度:O(1)\O(1)int main() { int m = 0; whil..原创 2022-02-19 10:00:09 · 538 阅读 · 0 评论