首页
关于
在线观影
数据统计
在线直播
在线壁纸
更多
友情链接
Search
1
记录一次网站的崩溃历史!
47 阅读
2
宝塔9.5.0开心版本 - 破解版 - 无后门版本
47 阅读
3
欢迎使用 Typecho
39 阅读
4
如何免费利用授权服务器(License Server)激活Jetbrains全家桶
37 阅读
5
力扣509斐波那契数列
28 阅读
C/C++
Python
技术分享
前端项目学习
Vue
日常分享
登录
/
注册
Search
标签搜索
苹果cms
苹果cms问题
苹果cmsseo
Vue学习
RSS
RSS订阅
Django
Pycharm
Python
前后端不分离项目
影视网站
前端项目
DeepSeek
蒸馏模型
LLM
大语言模型
VUE
海绵博客
订阅教程
信息获取
小菩提
累计撰写
93
篇文章
累计收到
11
条评论
首页
栏目
C/C++
Python
技术分享
前端项目学习
Vue
日常分享
页面
关于
在线观影
数据统计
在线直播
在线壁纸
友情链接
搜索到
85
篇与
的结果
2024-11-08
力扣照常更新896 单调数列
今天这个有点意思 有点flag的感觉,但是又不太一样的样子直接上题目如果数组是单调递增或单调递减的,那么它是 单调 的。如果对于所有 i <= j,nums[i] <= nums[j],那么数组 nums 是单调递增的。 如果对于所有 i <= j,nums[i]> = nums[j],那么数组 nums 是单调递减的。当给定的数组 nums 是单调数组时返回 true,否则返回 false。那么很简单,进行循环判断即可但是怎么写在我这里犯了难,就是我不知道如何一直一直的表示下去那么我看了一眼别人写的我来简单的解释说明一下bool isMonotonic(int* nums, int numsSize) { int i; bool increasing = true; bool decreasing = true; for (i = 0; i < numsSize - 1; i++) { if (nums[i] > nums[i + 1]) { increasing = false; } else if (nums[i] < nums[i + 1]) { decreasing = false; } // 如果既不递增也不递减,则不是单调数组 if (!increasing && !decreasing) { return false; } } return true; } 意思就是 先设置一个i变量进行循环判断,然后设置decreaing和increasing来作为bool来判断,接下来就是判断的正常基槽了。比如123 如果第一个小于第二个的话 increasing是true decreasing是false那么接下来执行下面的代码 如果increasing是false decreasing也是false,那么很简单 说明不是递增,也是不是递减的了看了这道题目,我又多了一种思考问题的方法真的厉害
2024年11月08日
7 阅读
0 评论
0 点赞
2024-11-06
力扣颠倒二进制位
这个是利用的进制的转换实现的首先我们要知道,如果一个二进制往左移动一位的话 那么相当于扩大了二倍,比如说二进制的1代表1.如果往左移动一位的话,就是10,那么这个二进制是2,相当于1 * 2.同样的道理,接着移动一位的话就是100,这个二进制是4。那么接下来的题目就很好完成了,颠倒给定的 32 位无符号整数的二进制位。uint32_t reverseBits(uint32_t n) { uint32_t result = 0; for(int i = 0;i < 32;i++){ result = (result << 1) +(n >> i & 1); } return result; }解释一下,首先就是定位了一个32位的result,初始化为0,接下来进行一个for循环。首先就是还是上面的案例,比如输入的是101,那么我们刚开始result是0,然后n向左移动一位是1,相当于1 + 0,接下来是result是1 但是此时的result需要向左移动一位也就是变成了10,接下来加上n的第二位,是0,和1进行异或运算,结果是0,那么10 + 0是10接下来同样的道理,可以很轻松的得到正确的答案。
2024年11月06日
5 阅读
0 评论
0 点赞
2024-11-05
力扣刷题344 反转字符串
很典型的双指针类型的问题双指针最近做了几道题目,感觉没啥意思,基本都是讨一个模板接下来直接贴上题目编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。那么接下来编辑函数void reverseString(char* s, int sSize) { int i = 0; int j = sSize - 1; int temp; while (i < j){ temp = s[i]; s[i++] = s[j]; s[j--] = temp; } }思路很简单,定义一个start 再定义一个end 然后start从前面 end从后面开始不断的交换,和之前讲的那种swap交换数字很类似的基本没啥难度 日更结束 休息
2024年11月05日
7 阅读
0 评论
0 点赞
C语言知识点(二)
今天学习全局变量和局部变量首先我们看局部变量,实际上我们之前学过的所有变量都是局部变量我还是在这里距离说明一下什么是局部变量介个就是局部变量,局部变量只会在作用域中生效,其他函数中无法生效接下来就是函数的参数和返回类型我们的函数是可以接受参数来完成我们想让他完成的任务的,比如我们实现一个功能是为了让实现俩个数相加代码如下#include <stdio.h> void test(int, int); //函数原型中需要写上需要的参数类型,多个参数用逗号隔开,比如这里我们需要的就是两个int类型的参数 int main() { } void test(int a, int b){ //函数具体定义中也要写上,这里的a和b我们称为形式参数(形参),等价于函数中的局部变量,作用域仅限此函数 printf("%d", a + b); }那么很容易可以在命令行里面打印出a + b来,这就是函数的调用的功能接下来学习一下递归调用,递归也算算法里面的一个内容,这里我先举例说明一下咯可以看出来 sum函数里面不断的调用sum函数,这样让hello world不断的输出的情况 这就是不断的递归#include <stdio.h> void test(){ printf("Hello World!\n"); test(); //函数自己在调用自己,这样的话下一轮又会进入到这个函数中 } int main() { test(); }原理的话 我现在不解释,后期的写数据结构的时候去做详细的解释接下来讲解的是指针,指针本来想单独开一篇的,但是想了想,还是先这样直接写吧首先我们肯定还记得上面对于俩个数字进行交换的案例那么我们发现了函数的外部还是原来的样子,这和局部变量和全局变量也是有关系的,那么问题来了,我们有没有什么办法可以做到函数改变时候,外部也改变一下呢,版本答案就是指针看到了吧 &是传入 *获取具体的内存下面的数值指针入门基本就这个样子,具体的话 后期我会单独开一篇文章去详细的介绍指针的,包括指针是怎么分布在内存上面的。接下来了解指针数组和数组指针首先我们了解一下什么是数组数组就是大概这个样子[a,b,c]这个样子,那么我们是否可以通过这个指针来访问数组呢?#include <stdio.h> int main(){ int a, b, c; int * arr[3] = {&a, &b, &c}; *arr[0] = 999; //[]运算符的优先级更高,所以这里先通过[0]取出地址,然后再使用*将值赋值到对应的地址上 printf("%d", a); }#include <stdio.h> int main(){ int arr[3] = {111, 222, 333}; int (*p)[3] = &arr; //直接对整个数组再取一次地址 printf("%d, %d, %d", *(*p+0), *(*p+1), *(*p+2)); //要获取数组中的每个元素,稍微有点麻烦 }接下来是函数指针和指针函数先看指针函数#include <stdio.h> int * test(int * a){ //函数的返回值类型是int *指针类型的 return a; } int main(){ int a = 10; int * p = test(&a); //使用指针去接受函数的返回值 printf("%d\n", *p); printf("%d", *test(&a)); //当然也可以直接把间接运算符在函数调用前面表示直接对返回的地址取地址上的值 }以上就是第二章咯
2024年11月03日
10 阅读
0 评论
0 点赞
C语言知识大全 (一)
这估计我将会用一整天的时间去编写的博文,预计就是2024年11月2日开工 3日竣工的一篇博文,这篇文章不单单是关于计算机C语言,更是一篇完整版的总结 所有的教学环境均用DEV来编写,如果有问题请检查环境的元素首先我们先开始一个简单的一个程序#include "stdio.h" int main(){ printf("Hello world"); return 0; }上面的代码很简单,是一个简单到不能再简单的语言,如果此时我们在编译器里面进行编译的话 会发现可以打印出Hello World这个语言很好,那么开始对代码进行解析,首先include "stdio.h"的学名叫做头文件,这个头文件的作用其实就是将其他人写的代码一键打包过来,按照stdio这个库里面的内容自动包含了scanf和printf等语句接下来我们可以观察到int main(){ }这个名字叫做主函数,一个程序中肯定需要一个主函数,那么有主函数肯定有其他的函数,这个之后再说接下来就是printf语句,这个是很典型的一个语句,作用就是打印出,可能刚开始看到这个是我们在黑黑的窗口里面打印出来的数据,其实不单单是这个作用,后面可能会用这个东西进行打印数据的作用,最后就是返回了return 0 这是因为我们前面是int main 这个就引出了下面的知识点,int 是什么意思首先我们要知道的是计算机主要的功能是计算,那么我们肯定有很多的数据需要计算机去计算,那么C语言里面有那些数据的类型呢很明显可以看到有很多类型,现在不需要一个一个记忆,我们可以先把这些写出来,int short long float double char struct union enun void *没错 这里面所有的都是数据类型,同时也是keyword那么之后还有一些其他的内容可以去填充,现在不需要记忆!!! 因为到了后面就会发现,根本用不了这么多!{dotted startColor="#ff6c6c" endColor="#1989fa"/}接下来阐述的知识点是宏 没错直接就是宏#define PI 3.1415926以上就是宏的一个定义下面是应用#define PI 3.1415926 #include "stdio.h" int main(){ printf("%f",PI); }上面就是代码的运行案例可以自己先去运行一下的上面我们说过主函数,那么肯定还有其他的函数,我们称之为函数声明首先我们举例说明很明显可以看到sum是另外一个函数,那么这个sun是如何定义的呢? 首先就是所有的函数定义和调用的时候,声明函数的返回类型,函数名和参数列表接下来就是注释了C语言提供了多种注释办法,这里我距离说明几种接下来是运算符的问题 首先就是正常的数学的+ - * / % 这里需要注意的是 / %是不一样的 j接下来是第一篇文章最后的总结的内容关于C语言所有的关键词下表列出了 C 中的保留字。这些保留字不能作为常量名、变量名或其他标识符名称。关键字 说明auto 声明自动变量break 跳出当前循环case 开关语句分支char 声明字符型变量或函数返回值类型const 定义常量,如果一个变量被 const 修饰,那么它的值就不能再被改变continue 结束当前循环,开始下一轮循环default 开关语句中的"其它"分支do 循环语句的循环体double 声明双精度浮点型变量或函数返回值类型else 条件语句否定分支(与 if 连用)enum 声明枚举类型extern 声明变量或函数是在其它文件或本文件的其他位置定义float 声明浮点型变量或函数返回值类型for 一种循环语句goto 无条件跳转语句if 条件语句int 声明整型变量或函数long 声明长整型变量或函数返回值类型register 声明寄存器变量return 子程序返回语句(可以带参数,也可不带参数)short 声明短整型变量或函数signed 声明有符号类型变量或函数sizeof 计算数据类型或变量长度(即所占字节数)static 声明静态变量struct 声明结构体类型switch 用于开关语句typedef 用以给数据类型取别名unsigned 声明无符号类型变量或函数union 声明共用体类型void 声明函数无返回值或无参数,声明无类型指针volatile 说明变量在程序执行中可被隐含地改变while 循环语句的循环条件C99 新增关键字_Bool _Complex _Imaginary inline restrictC11 新增关键字_Alignas _Alignof _Atomic _Generic _Noreturn_Static_assert _Thread_local
2024年11月02日
15 阅读
1 评论
0 点赞
1
...
15
16
17