程序员基本功
文章平均质量分 60
小羊吃饱了
这个作者很懒,什么都没留下…
展开
-
java输入输出练习
输入输出练习输入描述:输入数据有多组, 每行表示一组输入数据。每行不定有n个整数,空格隔开。(1 <= n <= 100)。输出描述: 每组数据输出求和的结果输入例子1:1 2 34 50 0 0 0 0输出例子1:690import java.util.Scanner;public class Main { public static void main(String[] args){ Scanner sc = new Scanner(Sys原创 2021-04-23 10:23:47 · 727 阅读 · 0 评论 -
排序算法
冒泡排序:每一轮两两比较进行后,最后一个元素是最大的元素稳定原地算法:不依赖额外资源,空间复杂度O(1),输出覆盖输入 冒泡若已经是排序好的序列:在第一层循环里加上一个Boolen,进入第二层循环设为false,否则返回true若是末尾几个是排序好的:第一层里加上Index1=1,若进入第二层就为begin,不进入就end= index1选择排序:找到最大的元素,与最末尾的元素进行位置交换不稳定(若链表就稳定emm)堆排序:(建堆的知识点:原地建堆:siftDown效率比较高N.原创 2021-04-23 10:23:23 · 83 阅读 · 0 评论 -
Linux命令
SCP命令复制本地的文件/目录到外面(远程前后调换)scp local_file remote_username@remote_ip:remote_folder或者scp local_file remote_username@remote_ip:remote_file或者scp local_file remote_ip:remote_folder或者scp local_file remote_ip:remote_file1.CPU占用最多的前10个进程:ps auxw|head -1;p原创 2021-04-23 10:22:14 · 81 阅读 · 0 评论 -
visio使用笔记
设置图形之间相同的间距1.选中所有想要对齐的图形2.选择“开始——位置——横向分布/纵向分布”(ps:这个功能若同时相设置多行多列的图形对齐会出错,暂时一次只能对齐一行或者一列的图形)在图形中添加连接点1.选择“开始——x”2.按住“ctrl”键,在想要的位置点击鼠标加上连接点调整画纸的大小、方向选择“设计——纸张方向/大小”...原创 2021-01-20 15:21:00 · 626 阅读 · 0 评论 -
递归和迭代的区别
递归:函数自身调用自身迭代:把输出的结果作为输入递归和迭代在时间复杂度方面是等价的(在不考虑函数调用开销和函数调用产生的堆栈开销)但实际上递归确实效率比迭代低采用递归算法需要的前提条件是,当且仅当一个存在预期的收敛时,才可采用递归算法,否则,就不能使用递归算法。递归其实是方便了程序员难为了机器,递归可以通过数学公式很方便的转换为程序。其优点就是易理解,容易编程。但递归是用栈机制实现的,每深入一层,都要占去一块栈数据区域,对嵌套层数深的一些算法,递归会力不从心,空间上会以内存崩溃而告终,而且递归也带原创 2020-12-18 21:10:48 · 178 阅读 · 0 评论 -
vs code 的常用快捷键
1、注释:a) 单行注释:[ctrl+k,ctrl+c] 或 ctrl+/b) 取消单行注释:[ctrl+k,ctrl+u] (按下ctrl不放,再按k + u)c) 多行注释:[alt+shift+A]d) 多行注释:/**2、移动行:alt+up/down3、显示/隐藏左侧目录栏 ctrl + b4、复制当前行:shift + alt +up/down5、删除当前行:shift + ctrl + k6、控制台终端显示与隐藏:ctrl + ~7、查找文件/安装vs code 插件地址:原创 2020-12-10 15:57:12 · 938 阅读 · 0 评论 -
Linux常用命令
解压命令.tar解包:tar xvf FileName.tar打包:tar cvf FileName.tar DirName(注:tar是打包,不是压缩!)———————————————.gz解压1:gunzip FileName.gz解压2:gzip -d FileName.gz压缩:gzip FileName.tar.gz 和 .tgz解压:tar zxvf FileName.tar.gz压缩:tar zcvf FileName.tar.gz DirName——————————原创 2020-12-03 09:19:33 · 98 阅读 · 0 评论 -
【数据结构】递归反转链表:如何拆解复杂问题
//单链表节点的结构public class ListNode{int val;ListNode next;ListNode(int x) {val = x;} } //单链表的反转ListNode reverse(head){if(head.next = null)return head;ListNode last = reverse(head.next);///这一句结束以后,head之后的节点已经全部转向head.next.next = head;//最后两句调整Head节点的状态转载 2020-11-26 10:11:14 · 161 阅读 · 0 评论 -
【数据结构】数据结构和算法学习大纲
数据结构的存储方式数据结构的存储方式只有两种:数组(顺序存储)和链表(链式存储)。数据结构种类很多,甚至你也可以发明自己的数据结构,但是底层存储无非数组或者链表,二者的优缺点如下:数组由于是紧凑连续存储,可以随机访问,通过索引快速找到对应元素,而且相对节约存储空间。但正因为连续存储,内存空间必须一次性分配够,所以说数组如果要扩容,需要重新分配一块更大的空间,再把数据全部复制过去,时间复杂度 O(N);而且你如果想在数组中间进行插入和删除,每次必须搬移后面的所有数据以保持连续,时间复杂度 O(N)。链转载 2020-11-26 09:29:46 · 245 阅读 · 1 评论 -
【数据结构】递归思维:k个一组反转链表
一、分析问题首先,链表是一种兼具递归和迭代性质的数据结构,认真思考一下可以发现这个问题具有递归性质。什么叫递归性质?直接上图理解,比如说我们对这个链表调用 reverseKGroup(head, 2),即以 2 个节点为一组反转链表:如果我设法把前 2 个节点反转,那么后面的那些节点怎么处理?后面的这些节点也是一条链表,而且规模(长度)比原来这条链表小,这就叫子问题。我们可以直接递归调用 reverseKGroup(head, 2),因为子问题和原问题的结构完全相同,这就是所谓的递归性质。发.转载 2020-11-25 20:26:28 · 147 阅读 · 0 评论 -
【数据结构】单链表
线性表:同一种类型的有顺序的一组数据元素线性表的形式:顺序表、链表顺序表:表中元素按顺序放在一大块连续的内存中,元素中的顺序由存储顺序来表示链表:表中元素放在一系列的结点中,通过连接构造。结点可以连续也可以不连续。结点分为「数据域」和「指针域」。数据域:保存着作为表元素的数据项;指针域:保存同一个表里的下一个结点的标识。头结点和头指针的区分头结点 的设立是为了操作的统一和方便,是放在第一个元素的节点之前,它的数据域一般没有意义,并且它本身也不是链表必须要带的。那设立头节点的目的是什么呢?其原创 2020-11-19 14:35:41 · 519 阅读 · 0 评论 -
【Python】中的面向对象编程
面向对象的设计思想是从自然界中来的,因为在自然界中,类(Class)和实例(Instance)的概念是很自然的。Class是一种抽象概念,比如我们定义的Class——Student,是指学生这个概念,而实例(Instance)则是一个个具体的Student,比如,Bart Simpson和Lisa Simpson是两个具体的Student。面向对象的抽象程度又比函数要高,因为一个Class既包含数据,又包含操作数据的方法。数据封装、继承和多态是面向对象的三大特点,我们后面会详细讲解。以上看不懂前,都是转载 2020-11-19 09:33:50 · 199 阅读 · 0 评论 -
时间复杂度与空间复杂度的计算
区分算法好坏的标准:时效(算法的执行时间)和存储(算法执行需要的存储空间)时间复杂度大 O 表示法:当规模增加时,增长最快起主导性作用的函数 O(f(n))比如有一个算法的 T(n) = 2n^2+ 2n + 1000,当 n 为 10 或者 20 的时候,常数 1000 看起来对 T(n) 起着决定性的作用。但是当 n 为 1000 或者 10000 或者更大呢?n^2 起到了主要的作用。实际上,当 n 非常大时,后面两项对于最终的结果来说已经是无足轻重了。与上面求和函数的例子很相似,当 n 越转载 2020-11-12 21:11:26 · 135 阅读 · 0 评论