- 博客(29)
- 收藏
- 关注
原创 代码随想录算法训练营day13-二叉树part1
思路:1.递归遍历,递归访问二叉树的顺序一般是确定的,三种遍历方式,主要区别在于处理元素的时机。2.迭代遍历,利用栈模拟递归,但访问顺序和处理元素不再和递归一样容易分开,因三种遍历方式不同,访问顺序会影响处理元素的时机。一般。一种通用方法是,使用null标记访问过的节点,这样可以将子节点和自己按某种顺序入栈,。
2024-11-04 20:52:57
256
原创 代码随想录算法训练营day11-栈与队列part2
思路:栈的经典应用,难点主要在于理解题目意思,将后缀表达式转换成熟悉的中缀表达式。当遇到符号时,将栈顶前两个元素取出,进行计算后放回栈中。
2024-11-04 04:02:09
426
原创 代码随想录算法训练营day10-栈与队列part1
思路:栈的特点是先进后出,将先后顺序反转,如果再反转一次就是正序。将一个栈内元素,全部移到另一个栈中,就可以做到先进先出了。要注意的是,将元素移动的时机,一定是用于输出的栈元素为空。
2024-11-04 00:04:49
333
原创 代码随想录算法训练营day9-字符串part2
思路:1.使用双指针,从后往前获取所有单词,依次添加到新变量string后2.先去除前后空格,中间剩一个空格,整体反转,而后使用双指针,将每个单词反转一次。
2024-10-30 23:00:46
195
原创 代码随想录算法训练营day7-哈希表part2
思路:将四个数组分为两组,遍历第一组,将其和使用哈希表记录下来,由于可能重复,故需要统计和的数量。遍历另外一组,根据其和的相反数去查询哈希表,如果存在,则使结果加上其出现次数。
2024-10-23 22:44:31
251
原创 代码随想录算法训练营day6-哈希表part1
思路:先判断二者长度是否相等,利用unordered_map,记录各个字母出现的次数,在另一个字符串中,减去出现的次数,当某个字符出现次数为负数时,则不匹配。
2024-10-22 03:03:35
289
原创 代码随想录算法训练营day4-链表part2
思路:用四个变量指向相关的节点,在while循环中,改变这些节点之间的关系,并更新四个变量,每次判断奇书个或者偶数个的结束。删除链表的倒数第N个节点思路:主要问题是找到倒数第n+1个节点,我们可以构造一把固定长度尺子,大小为n+1,让其在链表中滑动,当右端到底时,左端就是要找的节点。由于可能删除原头节点,我们可以构造一个虚拟头节点。
2024-10-19 23:43:10
173
原创 代码随想录算法训练营day3-链表part1
思路:遍历链表,找到符合条件的元素,将其移除,由于移除时需要获取上一个节点,判断条件为下一节点的值。同时为了避免移除头节点所需的其他操作,可以设置虚拟头节点,即创建一个节点指向所给链表头节点。
2024-10-19 00:57:12
211
原创 代码随想录算法训练营day2-数组part2
思路:最容易想到遍历得到每个子数组,获取其和,找到最小长度,在这个基础上用前缀和优化。同时,容易发现,当一个子数组满足条件后,再扩大数组,一定不符合找最小要求。当满足田间后,我们可以缩短末尾,直到条件不再被满足,而后继续在开头添加元素。
2024-10-18 00:50:14
182
原创 指针-指向函数指针数组的指针
先来回忆一下,指针数组int *p[n]; //定义了一个存放指向int的指针的数组//先找名字p//由于结合性【】>*,先和【】结合表示是一个数组//再和*结合表示数组里存放的是指针//再和int结合 表示指针指向的是int数组指针,指向数组的指针int (*p)[n]; //定义了一个指向存放int的数组的指针//找名字,p//先和*结合,表示p是一个指针//再和【】结合表示指向的是一个数组指向指针数组的指针 int(*(*P)[n]); //指向整
2022-02-18 17:44:47
746
原创 指针-函数指针数组
什么是函数指针数组?之前有说过指针数组,里边存放的是一群相同类型的指针,函数指针数组是它的自己,那群指针指向的是参数和返回类型相同的函数。如何表示函数指针数组?了解这个之前,要先了解一些符号的优先级,*<[]<()。现在我们先回顾一下函数指针是怎么来的int test (int a,int* b){}int *p1; //定义了一个整型指针变量p1int (*p)(int ,int*);//定义了一个函数指针变量p//先找名字 p//p先和*
2022-02-18 16:34:45
264
原创 c语言实现-五子棋(单双人,可改棋盘大小)
详解准备编译器:vs2022,如果你的编译器报错,把scanf_s改成scanf即可。#include<stdio.h>#include<stdlib.h>#include<time.h>//定义字符#define ROW 10 //改变这两个数值可改变棋盘大小#define COL 10游戏函数声明//函数声明//初始化棋盘数据void InitBoard(char(*Board)[COL], int ...
2022-02-16 04:02:00
3989
2
原创 指针-函数指针
目录什么是函数指针?函数指针标准函数名的意义函数中()的意义一个函数指针函数指针的赋值及使用两个有趣的函数指针No.1No.2No.2的简化——typedef什么是函数指针?我们来类比一下 int* pa; //整型指针 char* pb; //字符指针 int(*pc)[3]; //数组指针,指向存放3个int的数组 char(*pd)[3]; //数组指针,指向存放3个char的数组顾名思义,函数指针是一个指向函数的指针函数
2022-02-15 04:00:21
723
原创 指针-数组传参,指针传参
目录数组传参一维数组二维数组指针传参一级指针二级指针一个特殊的二级指针数组传参一维数组我们把传入一维数组时输入的是数组名,数组名是一个指向首元素的指针那么在函数接收时,只需要保证传入地址的类型相同即可#include<stdio.h>void test(int arr[]) {} //int arr[] 可以看成int *arrvoid test1(int arr[10]){} //传入的是指向首元素的地址,和[]内的值
2022-02-14 21:57:47
1380
原创 指针-指针数组,数组指针
Part1:指针数组 用法 低级 写入 输出 正常 在之前,指针数组有提到过,是一个数组,存放指针的数组。为什么会出现这个东西,当我们要把许多地址都交给指针变量的时候,需要一个一个写,太麻烦了,指针数组解了这个问题。来看一下指针数组的使用:和定义普通类型数组一般,只是赋值时的内容变成了地址,类型加上*。使用的话,我们可以用一个循环来找到每个指针的地址,再解引用它。#include<stdio.h>int main(void) { int a = 1; in...
2022-02-14 01:12:39
308
原创 指针-字符指针
Part1:数组函参 字符指针 基本用法 常量字符串我们把要把数组传入函数时,其实传入的是一个地址,对地址内的内容进行修改,对其进行sizeof的话得到的不是数组所占空间,而是指针所占的空间。#include<stdio.h>void mylen(int arr[]) { int sz = sizeof(arr) / sizeof(arr[0]); printf("%d", sz);}int main(void) { int arr[10] = { 0 }; myl
2022-02-13 13:51:05
2718
原创 数据存储那些事3
Part1:有无符号 运算 Sleep(haomiao)(windows.h)for unsigned 循环变号字符’\0’有无符号的运算和正常的运算相同,用补码解决了这个问题,使得加减统一。只要不是负数,有无符号,在计算过程中只考虑范围问题和输出形式问题即可。Sleep()休眠函数,使程序停止,输入一个整型代表毫秒,在Windows头文件中。循环变号,在一个数据类型中,不论输入多大的数,其值会在该类型的范围内。如11111111+1=00000000,开始循环。字符‘’\0’在定义
2022-02-12 20:42:50
187
原创 关于数据存储的经典题
1.问输出的情况#include<stdio.h>#include<windows.h>int main(void) { unsigned int b = 5; for (b = 9; b >= 0; b--) { printf("%u\n", b); Sleep(500); } return 0;}这里注意到b是无符号的,其值一直在0-->2^32-1之间循环着,该程序在运行后会进入一个无限循环。2.问输出的情况#inclu
2022-02-12 19:15:33
295
原创 数据存储的那些事2
Part1:原码,反码,补码 有符号数? 符号位 数值位 整型那么数据是按照什么规则存放在计算机中的呢?先了解一下,原码,反码,补码。按照定义是有符号的负数整型原码反码补码才不相同,无符号的和正数三者相同。第一位是符号位,都是用0表示正,1表示负。而数值位三者皆不相同Part2:-10 整数 补码 为什么 加法器 加减统一我们举一个例子int:-10,我们知道一个整数占据4个字节00000000 00000000 00000000 00000000;空:一般情况不为01000
2022-02-12 15:17:15
245
原创 关于数据存储的那些事1
数据,异父异母的亲兄弟?Part1:数据类型 内置 自定义 构造 意义 内存空间 视角C语言数据类型大致可以分为两类,内置类型:char,int,long,long long,float,double自定义类型,也称为构造类型。这些类型有什么意义呢?想象一下,我们有一堆数据,要把他们存放到电脑里边去,电脑只有010101010 ……的信号,可以用二进制来表示,但二进制表示又太长了,于是用16进制来表示它们。整数的问题解决了,但是小数和符号要如何存放呢?有人就想出来了一个法子:我们可以用...
2022-02-05 00:12:25
313
1
原创 学习笔记——vs调试
对于初学者而言,如果不了解调试,不会调试。在遇到bug的时候,你可能会苦恼:为什么无法运行?为什么结果不对?然后用眼睛去看自己的代码,经过漫长的修改之后,程序可以运行了,你可能依旧苦恼:为什么这样可以?苦思冥想后开始怀疑自己,去各大平台去找相关资料,认为自己没有学好,想要重学一遍,然后时间这样过去了,可能还没学到什么东西。相信我,这样重复几次,你会怀疑自己不适合干这个,
2022-02-03 23:54:03
8333
原创 初学者c指针(白话文版)
最了解初学者困境的,一定同为初学者。要我说0基础是不存在的,大家多多少少都学过一些,只是对它的理解不够,而这是一篇初学者对指针的理解,文中少有对初学者而言的未知名词,让我们一起交流各自的理解。
2022-02-03 15:46:25
895
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人