Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
GreyZeng
algorithm
提交
04b60baf
A
algorithm
项目概览
GreyZeng
/
algorithm
通知
10
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
A
algorithm
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
04b60baf
编写于
1月 07, 2024
作者:
GreyZeng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
merge sort ref
上级
91de5b06
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
17 addition
and
10 deletion
+17
-10
README.md
README.md
+8
-0
src/main/java/git/snippet/mergesort/LeetCode_0315_CountOfSmallerNumbersAfterSelf.java
...rgesort/LeetCode_0315_CountOfSmallerNumbersAfterSelf.java
+9
-10
未找到文件。
README.md
浏览文件 @
04b60baf
...
...
@@ -37,17 +37,25 @@
[
重建二叉树问题
](
https://www.cnblogs.com/greyzeng/p/16715432.html
)
[
二叉树的按层遍历相关问题
](
https://www.cnblogs.com/greyzeng/p/16356829.html
)
-
类似问题一: 二叉树自底向上层序遍历
-
类似问题二:以数组的形式返回每一层节点的平均值
-
类似问题三:填充每个节点的下一个右侧节点指针
[
使用二叉树的递归套路来解决的问题
](
https://www.cnblogs.com/greyzeng/p/16703346.html
)
-
判断一棵树是否为平衡二叉树
-
判断一棵树是否为搜索二叉树
-
判断一棵树是否为完全二叉树
[
二叉树路径总和系列问题
](
https://www.cnblogs.com/greyzeng/p/15700243.html
)
[
与归并排序相关的一些问题
](
https://www.cnblogs.com/greyzeng/p/16653063.html
)
-
归并排序递归和非递归解法
-
合并两个有序数组
-
计算右侧小于当前元素的个数问题
## 更多
[
算法和数据结构学习笔记:CSDN
](
https://blog.csdn.net/hotonyhui/category_1250716.html
)
...
...
src/main/java/git/snippet/mergesort/LeetCode_0315_CountOfSmallerNumbersAfterSelf.java
浏览文件 @
04b60baf
package
git.snippet.mergesort
;
import
java.util.*
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
...
...
@@ -18,20 +19,18 @@ public class LeetCode_0315_CountOfSmallerNumbersAfterSelf {
// 思路转换为:一个数的右边有多少个数比它小!
// 改归并排序(从大到小)
public
List
<
Integer
>
countSmaller
(
int
[]
nums
)
{
List
<
Integer
>
ans
=
new
LinkedList
<>();
int
[]
result
=
new
int
[
nums
.
length
];
List
<
Integer
>
ans
=
new
ArrayList
<>(
nums
.
length
);
Node
[]
nodes
=
new
Node
[
nums
.
length
];
for
(
int
i
=
0
;
i
<
nums
.
length
;
i
++)
{
nodes
[
i
]
=
new
Node
(
i
,
nums
[
i
]);
ans
.
add
(
0
);
}
count
(
nodes
,
0
,
nums
.
length
-
1
,
result
);
for
(
int
n
:
result
)
{
ans
.
add
(
n
);
}
count
(
nodes
,
0
,
nums
.
length
-
1
,
ans
);
return
ans
;
}
public
void
count
(
Node
[]
nums
,
int
l
,
int
r
,
int
[]
result
)
{
public
void
count
(
Node
[]
nums
,
int
l
,
int
r
,
List
<
Integer
>
result
)
{
if
(
l
!=
r
)
{
int
m
=
((
r
-
l
)
>>
1
)
+
l
;
count
(
nums
,
l
,
m
,
result
);
...
...
@@ -41,14 +40,14 @@ public class LeetCode_0315_CountOfSmallerNumbersAfterSelf {
}
// 54 21 20 19 18 17
public
void
merge
(
Node
[]
nums
,
int
l
,
int
m
,
int
r
,
int
[]
result
)
{
public
void
merge
(
Node
[]
nums
,
int
l
,
int
m
,
int
r
,
List
<
Integer
>
result
)
{
Node
[]
help
=
new
Node
[
r
-
l
+
1
];
int
i
=
0
;
int
ls
=
l
;
int
rs
=
m
+
1
;
while
(
ls
<=
m
&&
rs
<=
r
)
{
if
(
nums
[
ls
].
value
>
nums
[
rs
].
value
)
{
result
[
nums
[
ls
].
index
]
=
r
-
rs
+
1
+
result
[
nums
[
ls
].
index
]
;
result
.
set
(
nums
[
ls
].
index
,
r
-
rs
+
1
+
result
.
get
(
nums
[
ls
].
index
))
;
help
[
i
++]
=
nums
[
ls
++];
}
else
{
help
[
i
++]
=
nums
[
rs
++];
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录