Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
M
makedown_practice
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
黄夏豪
makedown_practice
Commits
c20ec5e2
提交
c20ec5e2
authored
4月 03, 2020
作者:
黄夏豪
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add content to 2020-04-03.md
上级
992321c0
显示空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
96 行增加
和
5 行删除
+96
-5
2020-04-03.md
2020-04-03.md
+96
-4
md练习.md
md练习.md
+0
-1
没有找到文件。
2020-04-03.md
浏览文件 @
c20ec5e2
...
...
@@ -3,7 +3,7 @@
1.
[
语言编译器和解释器
](
#id1
)
2.
[
git的粗糙实现原理
](
#id2
)
3.
[
merge和rebase的区别
](
#id1
)
4.
[
木桶效应的循环流程和双指针流程
](
#id1
)
4.
[
能装多少水的循环和双指针解法
](
#id1
)
<h2
id =
"id1"
>
语言编译器和解释器
</h2>
...
...
@@ -11,7 +11,7 @@
上面列举的语言均属于半编译半解释型语言,通过编译器进行编译后,由JVM进行运行,通过JVM对底层的操作系统进行交互。


<h2
id =
"id2"
>
git的粗糙实现原理
</h2>
...
...
@@ -20,6 +20,98 @@ git:一个分布式项目版本控制工具
分布式基本原理:通过 remote add
<origin>
<url>
为本地仓库和远程仓库建立联系通过pull和push命令进行推送和更新
分布式粗糙流程图,如下:


Git版本快照存储方式,如下:

Git远程上传合并机制流程图,如下:

# Git中merge和rebase的区别
在git中假如对两条分支进行merge命令,git会取两条分支的最后一个commit与两条分支中的最后一个公共分支进行合并

rebase变基的命令,会将当前分支重新设置开始点.即将当前分支的提交 放入 被rebase的分支的后方.

# 能装多少水的循环和双指针解法
### 题目
给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。
输入垂直线代表输入数组
[
1,8,6,2,5,4,8,3,7
]
。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49
如图所示

解题思路1:对数组进行两层嵌套循环,计算出每两个线所能表示的最大面积,设置一个临时变量MaxArea对最大面积进行保存,每次计算出来的面积与MaxArea进行比对,其中取较大值为MaxArea赋值.
```
java
//通过循环的方式进行运算
public
static
int
maxArea
(
int
[]
height
)
{
if
(
height
.
length
<
2
)
{
return
0
;
}
int
maxArea
=
0
;
for
(
int
i
=
0
;
i
<
height
.
length
;
i
++)
{
for
(
int
j
=
i
+
1
;
j
<
height
.
length
;
j
++)
{
maxArea
=
Math
.
max
((
j
-
i
)*
Math
.
min
(
height
[
j
],
height
[
i
]),
maxArea
);
}
}
return
maxArea
;
}
```
第一次循环示例

第二次循环示例

最大面积示例

解题思路2:通过在数组的头和尾建立两个指针,并且建立变量MaxArea对计算出最大面积进行保存.每次循环对两枚指针所能代表的区域进行面积计算,对每次计算出的面积与最大面积进行比对,每次比对则保留较大的数值,计算完毕后将所代表数字较小的指针向内移动一位,直至两枚指针相遇.
```
java
// 通过双指针向内夹进的方式进行运算
public
static
int
maxArea
(
int
[]
height
)
{
if
(
height
.
length
<
2
)
{
return
0
;
}
int
left
=
0
;
int
right
=
height
.
length
-
1
;
int
maxArea
=
0
;
while
(
left
<
right
){
maxArea
=
Math
.
max
((
right
-
left
)*
Math
.
min
(
height
[
left
],
height
[
right
]),
maxArea
);
if
(
height
[
left
]
<
height
[
right
])
{
left
++;
}
else
{
right
--;
}
}
return
maxArea
;
}
```
第一次循环示例图

第二次循环示例图

第三次循环示例


md练习.md
浏览文件 @
c20ec5e2
# 这是一级标题
## 这是二级标题
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论