自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(64)
  • 问答 (1)
  • 收藏
  • 关注

原创 创建二维数组,查找数字是否存在---C语言

题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。时间复杂度 O(row+col)#define row 4 //行#define col 4 //列#include<stdio.h>#include<stdbool.h>//查找函数bool FindNum(int num, int(*p)[col])//二维数组的传参{ int i = 0

2021-08-10 21:24:41 471

原创 动态规划--n个骰子的点数(剑指offer)---C语言

把n个骰子扔在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率。你需要用一个浮点数数组返回答案,其中第 i 个元素代表这 n 个骰子所能掷出的点数集合中第 i 小的那个的概率。示例 1:输入: 1输出: [0.16667,0.16667,0.16667,0.16667,0.16667,0.16667]示例 2:输入: 2输出: [0.02778,0.05556,0.08333,0.11111,0.13889,0.16667,0.13889,0.11111,0.08

2020-12-02 23:41:32 336

原创 模拟实现strstr(代码练习)---c语言

const char *mystrstr(const char*str1, const char* str2){ assert(str1&&str2); while (*str2) { while (*str1&&*str1 != *str2) { ++str1; } if (!*str1) return NULL; const char* tmp1 = str1, *tmp2 = str2; while (*str1&&a

2020-11-30 23:09:27 144

原创 杨辉三角(代码练习)---C语言

void yangHuiTriangle(int n){ int data[30][30] = { 1 }; //第一行直接填好,播下种子 int i, j; for (i = 1; i < n; i++) //从第二行开始填 { data[i][0] = 1; //每行的第一列都没有区别,直接给1,保证不会越界。 for (j = 1; j <= i; j++) //从第二列开始填 { data[i][j] = data[i - 1][j] + data[i

2020-11-28 23:46:47 263

原创 模拟实现strcpy(代码练习)---C语言

char * my_strcpy(char * dst, const char * src){ char * cp = dst; while( *cp++ = *src++ ); return( dst );}

2020-11-27 00:10:05 145

原创 实现自己的strlen---C语言

size_t my_strlen(const char *str){ const char *esc = str; while(*esc++); return (esc - str - 1);}

2020-11-26 00:11:56 85

原创 函数打印的结果(内存地址、类型)---C语言

下面代码打印的结果是?#include <stdio.h>int main(){ int arr[] = {1,2,3,4,5}; short *p = (short*)arr; int i = 0; for(i=0; i<4; i++) { *(p+i) = 0; } for(i=0; i<5; i++) { printf("%d ", arr[i]); } return 0;}arr数组在内存中的存储格式

2020-11-24 21:57:18 585

原创 树的子结构(剑指offer)---C语言

剑指 Offer 26. 树的子结构输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)B是A的子结构, 即 A中有出现和B相同的结构和节点值。例如:给定的树 A: 3/ \4 5/ 1 2给定的树 B:4/1返回 true,因为 B 与 A 的一个子树拥有相同的结构和节点值。示例 1:输入:A = [1,2,3], B = [3,1]输出:false示例 2:输入:A = [3,4,5,1,2], B = [4,1]输出:tru

2020-11-23 17:58:05 136

原创 滑动窗口的最大值(剑指offer)---C语言

剑指 Offer 59 - I. 滑动窗口的最大值给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值。示例:输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3输出: [3,3,5,5,6,7]解释:滑动窗口的位置 最大值[1 3 -1] -3 5 3 6 7 31 [3 -1 -3] 5 3 6 7 31 3 [-1 -3 5] 3 6 7

2020-11-21 13:11:31 1094 1

原创 队列的最大值(剑指offer)---C语言

剑指 Offer 59 - II. 队列的最大值请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value、push_back 和 pop_front 的均摊时间复杂度都是O(1)。若队列为空,pop_front 和 max_value 需要返回 -1示例 1:输入:[“MaxQueue”,“push_back”,“push_back”,“max_value”,“pop_front”,“max_value”][[],[1],[2],[],[],[]]输出: [

2020-11-20 17:27:13 324 1

原创 重建二叉树(剑指offer)---C语言

剑指 Offer 07. 重建二叉树输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]限制:0 <= 节点个数 <= 5000/** * Definition for a binary tree node. * struct TreeNode { * int val; * st

2020-11-19 21:49:58 141

原创 二叉搜索树的最近公共祖先(剑指offer)---C语言

给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 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 和节

2020-11-18 15:13:00 704

原创 二叉树的最近公共祖先(剑指offer)---C语言

给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4]示例 1:输入: root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1输出: 3解释: 节点 5 和节点 1

2020-11-17 21:24:46 1100

原创 扑克牌中的顺子(剑指offer)---C语言

从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王为 0 ,可以看成任意数字。A 不能视为 14。示例 1:输入: [1,2,3,4,5]输出: True示例 2:输入: [0,0,1,2,5]输出: True限制:数组长度为 5数组的数取值为 [0, 13] .int cmp(const void *a, const void *b){ return *(int*)a - *(int*)b

2020-11-16 00:37:53 1103

原创 翻转单词顺序(剑指offer)---C语言

输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. “,则输出"student. a am I”。示例 1:输入: “the sky is blue”输出: “blue is sky the”示例 2:输入: " hello world! "输出: “world! hello”解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。示例 3:输入: “a good

2020-11-04 00:10:29 1834 2

原创 和为s的连续正数序列(剑指offer)---C语言

输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。示例 1:输入:target = 9输出:[[2,3,4],[4,5]]示例 2:输入:target = 15输出:[[1,2,3,4,5],[4,5,6],[7,8]]限制:1 <= target <= 10^5/** * Return an array of arrays of size *returnSize.

2020-11-03 00:00:43 266

原创 左旋转字符串(剑指offer)---C语言

剑指 Offer 58 - II. 左旋转字符串字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。示例 1:输入: s = “abcdefg”, k = 2输出: “cdefgab”示例 2:输入: s = “lrloseumgh”, k = 6输出: “umghlrlose”char* reverseLeftWords(char* s, i

2020-11-02 13:17:45 309

原创 在排序数组中查找数字(剑指offer)---C语言

剑指 Offer 53 - I. 在排序数组中查找数字 I统计一个数字在排序数组中出现的次数。输入: nums = [5,7,7,8,8,10], target = 8输出: 2输入: nums = [5,7,7,8,8,10], target = 6输出: 0int search(int* nums, int numsSize, int target){ int left = 0; int right = numsSize - 1; int count = 0;

2020-10-26 17:48:15 146

原创 两个链表的第一个公共节点(剑指offer)---C语言

输入两个链表,找出它们的第一个公共节点/** * Definition for singly-linked list. * struct ListNode * { * * int val; * * struct ListNode *next; * * }; * */* struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) * { * struct L

2020-10-25 00:07:41 263

原创 第一个只出现一次的字符(剑指offer)---C语言

在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。s = “abaccdeff”返回 “b”s = “”返回 " "char firstUniqChar(char* s){ int arr[123] = {0}; for(int i = 0; s[i] != '\0'; ++i) { arr[s[i]] += 1; } for(int i = 0; s[i] != '\0'; +

2020-10-25 00:02:37 163

原创 连续子数组的最大和(剑指offer)---C语言

输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。输入: nums = [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。int maxSubArray(int* nums, int numsSize){ int max = nums[0]; int sum = nums[0]; for(int i = 1; i < numsSize; +

2020-10-22 23:22:27 1358

原创 最小的k个数(剑指offer)---C语言

输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。输入:arr = [3,2,1], k = 2输出:[1,2] 或者 [2,1]输入:arr = [0,1,2,1], k = 1输出:[0]/** * Note: The returned array must be malloced, assume caller calls free(). */ int cmp(void *a, void *b) {

2020-10-22 23:19:04 941

原创 数组中出现次数超过一半的数字(剑指offer)---C语言

数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。你可以假设数组是非空的,并且给定的数组总是存在多数元素。输入: [1, 2, 3, 2, 2, 2, 5, 4, 2]输出: 2int majorityElement(int* nums, int numsSize){ int x = 0; int vote = 0; for(int i = 0; i < numsSize; ++i) { if(vote == 0

2020-10-22 23:15:41 344

原创 从上到下打印二叉树(剑指offer)---c语言

从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。例如:给定二叉树: [3,9,20,null,null,15,7]返回其层次遍历结果:[[3],[9,20],[15,7]]/** * Definition for a binary tree node. * struct TreeNode { * * int val; * * struct TreeNode *left; * * struct TreeNode *right; *

2020-10-21 18:15:33 690

原创 包含min函数的栈(剑指offer)---C语言

定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1);示例:MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0);minStack.push(-3);minStack.min(); --> 返回 -3.minStack.pop();minStack.top(); --> 返回 0.min

2020-10-18 19:18:15 285 3

原创 菲波那切数列(剑指offer)---c语言

剑指 Offer 10- I. 斐波那契数列写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项。斐波那契数列的定义如下:F(0) = 0, F(1) = 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。示例 1:输入:n = 2输出:1示例 2:输入:

2020-10-16 23:50:11 508 2

原创 用两个栈实现队列(剑指offer)---C语言

剑指 Offer 09. 用两个栈实现队列用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )示例 1:输入:[“CQueue”,“appendTail”,“deleteHead”,“deleteHead”][[],[3],[],[]]输出:[null,null,3,-1]示例 2:输入:[“CQueue”,“delete

2020-10-16 23:47:56 182

原创 从尾到头打印链表(剑指offer)---C语言

剑指 Offer 06. 从尾到头打印链表输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:输入:head = [1,3,2]输出:[2,3,1]/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; *//** * Note: The returned array must be mal

2020-10-16 23:44:48 155

原创 调整数组顺序使奇数位于偶数前面(剑指offer)---c语言

剑指 Offer 21. 调整数组顺序使奇数位于偶数前面输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。示例:输入:nums = [1,2,3,4]输出:[1,3,2,4]注:[3,1,2,4] 也是正确的答案之一。提示:1 <= nums.length <= 500001 <= nums[i] <= 10000/** * Note: The returned array must be mall

2020-10-15 23:25:49 280

原创 删除链表的结点(剑指offer)---C语言

给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。注意:此题对比原题有改动示例 1:输入: head = [4,5,1,9], val = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.示例 2:输入: head = [4,5,1,9], val = 1输出: [4,5,9]解释: 给定你链表中值为 1 的第三个节点,那么在调用了你的函数之后,该链

2020-10-15 23:23:46 599

原创 打印从1到最大的n位数(剑指offer)---C语言

输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。示例 1:输入: n = 1输出: [1,2,3,4,5,6,7,8,9]说明:用返回一个整数列表来代替打印n 为正整数/** * Note: The returned array must be malloced, assume caller calls free(). */int* printNumbers(int n, int* returnSize){

2020-10-15 23:22:07 292

原创 替换空格---c语言(剑指offer)

请实现一个函数,把字符串 s 中的每个空格替换成"%20"。示例 1:输入:s = “We are happy.”输出:“We%20are%20happy.”限制:0 <= s 的长度 <= 10000char* replaceSpace(char* s){ char *returned=calloc(strlen(s)*3+1,sizeof(char)); int i=0,k=0; while(s[i]!='\0'){ if(s[i]==

2020-10-13 12:55:38 84

原创 二维数组中的查找---C语言(剑指offer)

在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例:现有矩阵 matrix 如下:[[1, 4, 7, 11, 15],[2, 5, 8, 12, 19],[3, 6, 9, 16, 22],[10, 13, 14, 17, 24],[18, 21, 23, 26, 30]]给定 target = 5,返回 true。给定 targe

2020-10-13 12:52:14 404

原创 找出数组中重复的数字---c语言(剑指offer)

找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3限制:2 <= n <= 100000int findRepeatNumber(int* nums, int numsSize){ unsigned char remark[numsSize];

2020-10-13 12:48:55 1884

原创 linux下的基本命令,权限,以及某些命令的使用方法

1.进入目录需要哪些权限进入一个目录(cd)需要可执行(x)权限,如果要在目录里面创建(touch)一个文件则需要可写可执行(wx)权限,如果要将该文件中的内容显示(ls)出来,则需要可读权限(r),当进入目录之后需要删除其中的文件则不需要任何权限就可以删除,如果当前目录被添加了粘滞位,则是文件的拥有者才能删除(root).2.linux下的一些比=比较重要的目录/etc: 系统的一些主要配...

2019-12-14 23:35:16 135

原创 数据结构---栈知识点之括号匹配问题(C语言)

给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: “()”输出: true示例 2:输入: “()[]{}”输出: true示例 3:输入: “(]”输出: false示例 4:输入: “([...

2019-10-29 21:50:34 1587 2

原创 数据结构---链栈(C语言)

//整个工程中所要用到的头文件common.h#ifndef _COMMON_H_#define _COMMON_H_#include<stdio.h>#include<stdlib.h>#include<string.h>#include<assert.h>#include<stdbool.h>#define D...

2019-10-24 10:49:55 210

原创 栈空间实现(顺序表)

common.h#ifndef _COMMON_H_#define _COMMON_H_#include<stdio.h>#include<stdlib.h>#include<assert.h>#include<string.h>#include<stdbool.h>#define DataType inttypede...

2019-10-22 22:33:45 112

原创 单链表的基本功能---C语言

//整个工程所要可能会用到的头文件common.h#ifndef _COMMON_H_#define _COMMON_H_#include<stdio.h>#include<stdlib.h>#include<string.h>#include<assert.h>#include<stdbool.h>#define D...

2019-10-14 22:02:40 130

原创 数据结构——顺序表(C语言)

#define _CRT_SECURE_NO_WARNINGS 1#include"seqlist.h"//#include"slist.h"int main(){ //创建一个顺序表 mylist Seqlist mylist; //初始化结构体, SEQLIST_DEFAULT_SIZE是宏定义的初始化顺序表的大小 SeqlistInit(&mylist, SEQ...

2019-10-13 20:01:02 313

空空如也

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

TA关注的人

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