数据结构
kcoo
小白很白!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Online Judge(OJ)系统的基本认知
IO(Input/Output)型问题指需要对输入数据进行处理并产生相应输出结果的编程问题。这类问题通常要求编写程序从标准输入读取数据,对数据进行处理,然后将结果输出到标准输出。结果返回:评测完成后,OJ返回程序的评测结果,包括是否通过、运行时间、内存消耗等信息。只需写出函数代码,不需要写头文件、主函数,代码提交后会和oj服务器代码合并,再运行。评测过程:OJ对用户提交的程序进行编译、运行、评测,检查程序的正确性和效率。用户提交:用户选择一种编程语言,编写程序解答,提交到OJ系统进行评测。原创 2023-11-24 11:54:10 · 1625 阅读 · 1 评论 -
顺序表(数据结构基础认知)
顺序表其实就是一个数组,用连续内存(物理地址)连续存储,不能跳过。数据是线性的,常见线性表:顺序表、链表、队列、字符串、栈·……小提醒:命名风格和STL走,后续学习STL标准C++组件库。满了不能插入,缺点给多少合适,给小不够,给多浪费。满后,一次扩2倍,适中空间,看情况来决定。写完一个小模块,运行看是否出错,不要写全再调试。链表用指针一块一块连起来。先用,如果用满重新开空间。空间足够,直接插入数据。整个顺序表没有空间。原创 2023-11-22 17:27:01 · 174 阅读 · 0 评论 -
轮转数组算法解析(通俗易懂)
调用函数Rotate,前n-k逆置,再后k逆置,后整体逆置。给一个整数数组,将数组中的元素向右旋转k个位置,k非负数。Left和right一直交换,利用tmp储存。次的功能,通过三次旋转操作来实现整体的旋转。函数,分别对数组的不同部分进行旋转操作。,表示需要旋转的数组部分的左右边界。循环来进行数组元素的交换操作,直到。,表示数组的首地址,一个整型变量。表示数组的大小,以及一个整型变量。为止,实现了数组元素的旋转操作。函数接受一个整型指针。当k大于长度,取余。函数接受一个数组指针。原创 2023-11-21 20:01:58 · 133 阅读 · 0 评论 -
消失的数字算法(3种思路解析)
思路2:(0+1+2+3+n)-(a[0]+a[1]+a[2]+a[n-1]) 时间复杂度O(N)给一个值x=0,x跟[0,n]所有值异或,x再跟数组中每个值异或,最后x就是缺失数字。思路1:Qsort快排:时间复杂度O(n*log2N)1)整数0到sumsize 相加给Sum1。分析每种思路复杂度,选择复杂度优的即可。2)数组sums元素相加给sum2。3)sum1-sum2得出缺失数字。原创 2023-11-20 22:17:42 · 250 阅读 · 0 评论 -
数据结构(时间复杂度)
时间复杂度:O(N^2),不需要精确执行次数,只需大概执行次数,用大O的渐进表示法。渐进表示法:描述函数渐进行为的数学符号,定义为函数T(n)=O(f(n)),有说明:M>N 则O(M)、N>M则O(N)、M和N差不多大,都可以用。当一个算法输入不同,时间复杂度不同,时间复杂度做悲观预期,看最坏情况。T(n)以f(n)为界或受限f(n),T(n)称为此算法时间复杂度,O(n^2)叫平方阶,操作数据与输入数据规模n的比例为二次平方。O(n)叫线性阶,操作数量与输入数据规模n为正比。估算代码循环逻辑执行次数。原创 2023-11-13 23:28:48 · 111 阅读 · 0 评论
分享