-
【基础】8、二叉树(二)
目录 二叉树遍历 二叉树遍历应用 根据遍历结果重构二叉树 遍历相关练习 前驱与后继节点二叉树遍历遍历是数据结构中的常见操作,把所有元素都访问一遍线性数据结构的遍历比较简单 正序遍历 逆序遍历根据节点访问顺序的不同,二叉树的常见遍历方式有4种 前序遍历(Preorder Traversal) 中序遍历(Inorder Traversal) 后序遍历(Postorder Traversal) 层序遍历(Level Order Traversal)一、前序遍历访...…
-
【基础】7、二叉树(一)
目录 树形结构 二叉树 二叉搜索树树形结构生活中的树形结构使用树形结构可以大大提高效率一、树的基本概念1、节点按节点位置:根节点、父节点、子节点、兄弟节点按节点的度:叶子节点(度为0的节点)、非叶子节点(度不为0的节点)节点的度(degree):子树的个数节点的深度(depth):从根节点到当前节点的唯一路径上的节点总数节点的高度(height):从当前节点到最远叶子节点的路径上的节点总数2、树子树、左子树、右子树空树:没有任何节点的树有序树:树中任意节点的子节点之间有顺序关系无序树...…
-
【基础】6、栈与队列
目录 栈 队列 栈与队列的相互实现栈一、简介栈是一种特殊的线性表,只能在一端进行操作往栈中添加元素的操作,一般叫做 push,入栈从栈中移除元素的操作,一般叫做 pop,出栈(只能移除栈顶元素,也叫做:弹出栈顶元素)后进先出的原则,Last In First Out,LIFO注意:这里说的“栈”与内存中的“栈空间”是两个不同的概念二、栈的接口设计与实现1、接口设计/// 获取栈中元素的数量-(int)size;/// 是否为空-(BOOL)isEmpty;/// 入栈/// @par...…
-
【基础】5、链表(三)
目录 单向循环链表 双向循环链表 约瑟夫问题 静态链表单向循环链表一、单向循环链表示例图多节点单节点二、单向循环链表节点的添加与删除- (void)add:(int)index element:(nonnull id)element { [self rangeCheckForAdd:index]; /** 需要考虑多种情况下的适用性问题: 1、中间位置 2、头、尾位置 3、首次添加 */ /...…
-
【基础】4、链表(二)
目录 虚拟头节点 动态数组的缩容 双向链表 复杂度分析虚拟头节点有时候为了让代码更加精简,统一所有节点的处理逻辑,可以在最前面增加一个虚拟的头结点(不存储数据)增加虚拟头结点后需要改动的方法 //初始化时创建虚拟头结点-(instancetype)init{ self = [super init]; if (self) { _first = [LCNode nodeWithElement:nil next:nil]; } return self...…
-
【基础】3、链表(一)
目录 链表 链表实现动态数组 算法训练链表一、简介动态数组有个明显的缺点 可能会造成内存空间的大量浪费 能否用到多少就申请多少内存?链表可以办到这一点 链表是一种链式存储的线性表,所有元素的内存地址不一定是连续的二、链表的设计链表实现动态数组LCLinkArray.h文件#import <Foundation/Foundation.h>#import "LCArray.h"NS_ASSUME_NONNULL_BEGIN@interface LCLinkArray : ...…
-
【基础】2、动态数组
目录 什么是数据结构 线性表 自实现动态数组什么是数据结构数据结构是计算机存储、组织数据的方式在实际应用中,根据使用场景来选择最合适的数据结构一、线性结构线性表(数组、链表、栈、队列、哈希表)二、树形结构二叉树、AVL树、红黑树、B树、堆、Trie、哈夫曼树、并查集三、图形结构邻接矩阵、邻接表线性表线性表是具有 n 个相同类型元素的有限序列( n ≥ 0 )a1 是首节点(首元素), an 是尾结点(尾元素)a1 是 a2 的前驱, a2 是 a1 的后继常见的线性表有 数组 链...…
-
【基础】1、复杂度
目录 什么是算法 斐波那契数列 大O表示法 fib函数复杂度分析 算法的优化方向什么是算法算法是用于解决特定问题的一系列的执行步骤比如://计算a跟b的和-(int)plustWithA:(int)a b:(int)b{ return a+b;}//计算 1+2+3+...n的和-(int)sumWithN:(int)n{ int result = 0; for (int i=1; i<=n; i++) { result += i; }...…
-
Git常用操作
目录 tag相关操作 远程仓库(未初始化)关联本地仓库 远程仓库(已初始化)关联本地仓库tag相关操作 操作 命令 说明 创建标签 git tag <tag_name> <commit_hash> 创建一个轻量标签(无附加信息),指向指定的commit。 查看所有标签 git tag 列出所有本地标签(按字母顺序)。 ...…
-
场景
目录 合并冲突 回滚场景合并冲突有一个共有的开发分支dev 有一个自己的业务分支lxy_develop平时我们自己的业务在自己的业务分支进行开发,如果有需要可以随时将dev的分支合并到lxy_develop 这样做的好处是: 1、实时保证自己的代码具有最新的功能,比如同事添加的好用的工具类 2、可以随时解决可能得冲突,而不至于等到最后集中到一块解决,容易产生错误在最后将lxy_develop合并到dev之前,做一次dev合并到lxy_develop的操作,目的是解决最后可能得...…
-
SSH配置
参考:Generating a new SSH key and adding it to the ssh-agent目录 SSH配置 如果有多个github账号怎么配置 错误收集目前github已经不允许使用账号密码的方式来拉取和提交代码了。可以使用下面两种方式:一种方式是使用SSH的方式来拉取和获取一种方式是可以使用令牌来拉取和获取SSH配置第一步:在本地创建一对公私钥ssh-keygen -t rsa -b 4096 -C "your_email@example.com"创建完成...…
-
Git报错收集
目录 报错收集报错收集一、执行git push报错报错信息如下remote: You must verify your email address.remote: See https://github.com/settings/emails.fatal: unable to access 'https://github.com/JiangHuHiKe/JiangHuHiKe.github.io.git/': The requested URL returned error: 403现象:...…
-
Git处理冲突
目录 分叉分叉当我们在一个分支使用git push提交内容时,如果在远端有别人已经提交了,这时会报错。$ git pushTo github.com:JiangHuHiKe/JiangHuHiKe.github.io.git ! [rejected] master -> master (fetch first)error: failed to push some refs to 'github.com:JiangHuHiKe/JiangHuHiKe.github.io...…
-
Git官方文档
目录 一、起步 二、Git 基础 三、Git 分支 四、服务器上的 Git 五、分布式 Git 六、GitHub 七、Git 工具 八、待整理 一、起步1.6 起步 - 初次运行 Git 前的配置git 版本查看git --version配置全局配置文件git config --global user.name "John Doe"git config --global user.email johndoe@example.com配置当前仓库的配置文件 如果...…
-
13、分支开发工作流
参考:玩转Git三剑客目录 长期分支 主题分支长期分支因为 Git 使用简单的三方合并,所以就算在一段较长的时间内,反复把一个分支合并入另一个分支,也不是什么难事。在整个项目开发周期的不同阶段,你可以同时拥有多个开放的分支;你可以定期地把某些主题分支合并入其他分支中。许多使用 Git 的开发者都喜欢使用这种方式来工作,比如只在 master 分支上保留完全稳定的代码——有可能仅仅是已经发布或即将发布的代码。 他们还有一些名为 develop 或者 next 的平行分支,被用来...…
-
12、Git集成使用禁忌
参考:玩转Git三剑客目录 禁止使用git push -f 禁止向集成分支执行变更历史的操作禁止使用git push -f当我们在当前分支向远程分支push的时候,如果不是fast-forward,Git是禁止我们向远程分支push的 这是Git的一种保护机制bogon:gitLearning LC$ git status On branch feature/add_git_commondsYour branch is behind 'github/feature/add_gi...…
-
11、Git多人协作
参考:玩转Git三剑客目录 多人协作 多人协作2多人协作一、不同人修改不同文件1、场景描述在GitHub网站gitLearning仓库创建一个分支:feature/add_git_commonds在本地仓库gitLearning,创建一个feature/add_git_commonds分支并跟踪远端feature/add_git_commonds在本地克隆一个新仓库gitLearning_02,创建一个feature/add_git_commonds分支并跟踪远端feature/a...…
-
10、Git与GitHub简单同步
参考:玩转Git三剑客目录 创建github账号 配置SSH 创建github仓库 关联github仓库创建github账号这个就不多说了配置SSH参考这个链接:https://docs.github.com/cn/free-pro-team@latest/github/authenticating-to-github/connecting-to-github-with-ssh查看本地的公私钥localhost:.ssh LC$ cd ~/.sshlocalhost:.ssh ...…
-
9、分支操作
参考:玩转Git三剑客目录 分支的创建、删除、切换 merge(fast-forward) merge(diverged) rebase cherry-pick分支的创建、删除、切换一、分支的创建#创建一个temp分支,并切换到tempgit checkout out -b tempgit checkout -h-b <branch> create and checkout a new branch-B <branch> ...…
-
8、Git独自使用(三)
参考:玩转Git三剑客目录 贮藏stash 忽略.gitignore Git的备份贮藏stash1、指令#将暂存区和工作区清空,并将内容贮藏起来git stash2、演示#查看下当前Git的状态,工作区有未保存的内容localhost:gitLearning LC$ git status On branch tempChanges not staged for commit: (use "git add <file>..." to update what will ...…