自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 收藏
  • 关注

原创 105. 从前序与中序遍历序列构造二叉树

构造二叉树

2023-02-15 20:54:14 212 1

原创 106. 从中序与后序遍历序列构造二叉树

构造二叉树

2023-02-15 20:44:44 219

原创 Java学习笔记——反射机制

反射机制

2022-07-24 17:23:41 277

原创 Java学习笔记——IO流

IO流

2022-07-15 19:33:54 288

原创 Java刷题之路——两数之和

两数之和(梦开始的地方)

2022-07-13 18:41:34 237

原创 Java学习笔记——Hash

哈希

2022-07-13 18:09:57 194

原创 Java学习笔记——泛型

泛型

2022-07-12 22:42:19 152

原创 Java刷题之路——分割链表

分割链表

2022-07-01 23:01:53 336

原创 Java刷题之路——删除重复的节点(有序)

删除重复节点

2022-07-01 22:41:40 246

原创 Java刷题之路——判断是否为回文结构

判断是否回文

2022-07-01 22:25:23 226

原创 Java刷题之路——寻找链表的中间节点

链表的中间节点

2022-06-30 22:19:39 434

原创 Java刷题之路——反转链表

反转链表

2022-06-30 22:07:42 154

原创 Java刷题之路——寻找链表的倒数第K个节点

寻找链表的倒数第K个节点

2022-06-30 17:07:43 314

原创 java—方法递归—青蛙跳台阶

青蛙跳台阶

2022-06-24 18:15:10 344

原创 Java—方法递归—汉诺塔问题

汉诺塔问题

2022-06-24 16:46:08 217

原创 Java—main方法中的string有何作用?

string[] args的作用

2022-06-18 16:39:44 363

原创 Java——数据类型.整形变量

整形变量

2022-06-17 19:20:25 882

原创 java-初识

初识Java

2022-06-17 19:04:33 70

原创 排序——堆排序

目录1.什么是堆?1.1大堆1.2小堆2.如何调整成小堆或大堆(如何建堆)2.1向下调整3.堆排序4.完整代码1.什么是堆?你可以把堆理解成一颗完全二叉树,它的结点并不一定是满的那么堆又分为:1.大堆 2.小堆1.1大堆大堆就是这颗完全二叉树的父节点都大于他的子节点例如这就是一个大堆1.2小堆小堆与大堆的区别就在于,小堆是每个父节点都小于他的子节点2.如何调整成小堆或大堆(如何建堆)我们将堆看做是一颗完全...

2022-03-29 10:50:34 350

原创 希尔排序——直插排序的更好优化

希尔排序

2022-03-28 17:24:05 497

原创 排序——直接插入排序

目录1.更好的理解插入排序2.实现插入排序3.代码实现4.完整代码如下1.更好的理解插入排序在开始前我们先了解一下直接插入排序的思想假设我们在打扑克牌,我们在摸牌的时候就要进行排序第一张牌是3第二张牌是6,我们应该放到3的右边第三次摸到5,我们应该放在3的右边,6的左边再摸到4,应该放在3的右边,5的左边2.实现插入排序今天的插入排序,与我们平时打扑克是一样的假设我们有这样一个数组来排序我们采用扑克...

2022-03-28 16:45:29 1678

原创 光标跳转函数

将光标跳转到任意位置我们就可以实现任意位置的打印需要的头文件<Windows.h>完整代码void CursorJump(int x, int y){ COORD pos; pos.X = x; pos.Y = y; HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleCursorPosition(handle, pos);}目录COORDHANDLEGetStdHandle

2022-03-27 12:10:40 2354

原创 乐趣c语言——贪吃蛇

贪吃蛇简单实现

2022-03-27 11:22:16 5830 1

原创 二叉树的遍历

1.前序前序遍历的规则:根--左--右void prevsort(root* p){ if (p == NULL) { printf("NULL "); return; } printf("%c ", p->data); prevsort(p->left); prevsort(p->right);}也就是说,先找根,然后再去找他的左,找到他的左之后,我们再去找左........直到在第n度时已经没有左子节点(NULL)我们再去找此时的右,父

2022-03-24 17:16:06 274

原创 二叉树遍历——层序遍历

目录1.什么是层序遍历?2.实现思路3.代码实现1.什么是层序遍历?就是将一颗树按照每一层每一层的方式进行遍历例如这棵树,进行层序遍历的结果应该是那么我们该怎样去实现呢?2.实现思路利用队列先进先出的思想去实现重要思想:一层带一层我们先把书的根节点入进去,然后每出一次都把它的子节点入队,出子节点时也一样3.代码实现因为我们用的是c来实现,所以在实现前请准备好一个队列队列头文件#pragma once#incl.

2022-03-24 16:43:58 11353

原创 LeetCode——oj 链表的中间结点

思路:快慢指针我们创建一个快指针和慢指针慢指针一次走一步快指针一次走两步两个同时从头开始走,当快指针走完n个时,慢指针走了n/2步所以此时的慢指针就是链表的中间结点struct ListNode* middleNode(struct ListNode* head){ struct ListNode* fast=head,*slow=head;//快慢指针起初都是头结点 while(fast->next !=NULL &&amp...

2022-03-19 11:30:41 280

原创 (Leetcode)oj——反转链表

题目要求将一个单链表进行反转(没有前指针,单向链表)思路1:定义三个变量,n2是头结点,n1起初为NULL,n3为n2的下一结点我们首先将n2的next指向n1然后将n2赋给n1,作为新头然后将n3赋给n2接下来重复上面操作,直到n2为NULL此时链表就变成了具体代码如下/** * Definition for singly-linked list. * struct ListNode { * int val; * ...

2022-03-19 11:15:22 406

原创 双向带头循环链表(最“完美”的链表)

“双向”“带头”“循环”链表

2022-03-18 10:09:45 264

原创 单链表的增删查改操作

单链表——只能单向访问的链表每个结点中存放数据和下个结点的地址我们今天来实现单链表简单的增删查改操作1.准备工作在开始前我们首先创建一个包含数据和地址的结构体结点typedef int Slisttype;//使得数据类型修改方便typedef struct SlistNode{ Slisttype data;//结点中存储的数据 struct SlistNode* next;//下个结点的地址}SlistNode;然后我们再创建第一个结点(NULL) .

2022-03-17 10:35:15 1489

原创 发放金币(循环)

分享一下个人思路:如果拿1金币,可以拿1天。2金币拿两天,n金币拿n天也就是说:我们要拿n金币,从当前的天数开始循环n次,每次拿n,每次拿完之后天数+1;#include <stdio.h>int main(){ int day=0;int money=0;int k=1;//每次拿的金币数量 scanf("%d",&day); for(int i=1;i<=day;)//这里不设置天数的加减,而在拿金币的时候进行天数加减 { ..

2022-03-15 16:40:07 230

原创 LeetCode——oj练习之原地删除数值中的元素

我们来看这道题思路有如下:1.利用循环判断数组的某个元素是否为需要移除的元素,如果是的话那么就将后面的元素先前覆盖一格,直到循环结束。相关代码如下时间复杂度为O(n^2)int removeElement(int* nums, int numsSize, int val){ for(int i=0;i<numsSize;i++) { if(nums[i]==val) { for(in...

2022-03-15 15:49:27 333

原创 消失的数字

题目如下时间复杂度为O(n)我们先看看最简单粗暴的解法思路:给定一个数组,数组内包含了从0--n的所有数字,但是缺少了一个那么我们想到:缺少那个数字后的数组求和,再将原数组求和,相减得到的就是那个缺少的数字代码参考如下int missingNumber(int* nums, int numsSize){ int sum = 0, sum2 = 0; for (int i = 0; i <numsSize ; i++) { sum += *(nums + i

2022-03-14 09:55:54 57

原创 动态内存详解

我们目前知道内存中几个常见的区1.栈区2.堆区3.静态区.........我们先来看看目前已知的在内存中是如何开辟空间的int a;//向栈区申请4个字节的内存int arr[5];//向栈区申请20个字节的内存我们会发现,数组的开辟多少空间是要提前设置好的,那么我们会不会有时候确定不了需要的字节呢我们来举一个例子struct Stu{ char name[20]; int age; int scort[10];}我们创建了一个有

2022-03-07 20:17:01 3630

原创 结构体详解----联合体

联合体和其他结构体一样都包含很多成员,但是不同点就在于这些成员的空间是共用的union S{ char a; int b;}那么有什么用呢实现判断当前机器的内存存储是大端字节存储还是小端字节存储int check_sys(){ union S { char a; int b; }s; s.b=1; return s.a;}int main(){ int ret=check_

2022-03-05 16:30:33 241

原创 结构体详解------枚举

枚举----(一一列举)枚举就是讲所有的可能性都列出来eg.(注意用逗号)enum sex{ male, female}设定完后你就可以使用这些枚举常量eg.int main(){ enum sex s=male; return 0; }枚举的优点1.增加代码的可读性和可维护性2.枚举相比#define的定义方式来说增加了类型检查,更加严谨3.防止了命名污染4.便与调试5.使用方便,一次定义多个常量...

2022-03-05 16:23:14 325

原创 结构体详解-------位段

我们知道结构体在内存中的存储是为了速度而舍弃浪费一些内存,那么为了减少内存的浪费,我们今天引入一个知识-----位段struct A{ int_a:3; int_b:4; int_c:2;}这就是一个位段的例子,我们看到成员都是一个冒号后面跟着数字,代表所占用的字节...

2022-03-05 16:17:36 204 1

原创 结构体----内存对齐(多用于求结构体大小)

前言:内存对齐的作用就是舍弃内存来换取运行速度我们先了解一下结构体在内存中如何存储数据1.第一个数据放在偏移为0的地址中2.其后的地址放在对齐数的整数倍地址上(自身所占用字节数与默认对齐数相比较,取较小值即为对齐数(在vs中默认对齐数为8));3.结构体总大小为最大对齐数的整数倍,结构体总大小向最大对齐数的整数倍取整eg.在结构体中如果最大对齐数为4,则总大小只能是4的倍数4.如果在结构体中有嵌套其他结构体的情况,则被嵌套的结构体的对齐数取自身结构体内最大对齐数,此时整个结构体的总大

2022-03-04 23:06:37 71

原创 内存函数实现------memcpy

我们先看memcpy函数的效果图我们的核心思想是,将要复制的大小(单位字节传输过去),然后在实现函数中一个字节一个字节的复制memcpy可以实现所有类型数据的复制,所以我们的定义部分如下void* my_memcpy(void* dest,const void* str,unsigned int num)dest是进行复制的目标地址(无类型),str是源头地址(无类型),num为需要复制的字节数(无符号整形)以下为具体实现过程 assert(dest&&str);

2022-03-04 10:32:37 151

原创 函数实现之------strstr

前言:这是我第一次遇到的逻辑相对来说比较绕的一个函数,希望这篇可以让我更好的去理解代码如下:#include <stdio.h>#include <assert.h>char* my_strstr(const char* s1,const char*s2){ assert(s1&&s2); const char* str1 = s1; const char* str2 = s2; const char* cut = s1; while (

2022-03-03 23:16:43 73

原创 逆序字符串中的n个字符

例如:输入"abcdef"逆序2个字符得到"cdefba"核心思想,将需要逆序的元素拿出来,然后将后面的元素往前推一个元素,然后把拿出来的那个元素放到后面的位置理论存在,实践开始#include <stdio.h>void nx_char(char* arr, int sz,int n){ int i = 0; for (i = 0; i < n; i++) { char tmp = *arr; int j = 0; for (j = 0; j &

2022-03-02 22:32:44 52

空空如也

空空如也

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

TA关注的人

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