mirror of
https://github.com/krahets/hello-algo.git
synced 2025-11-02 12:58:42 +08:00
feat: modify some Dart codes and add Dart code blocks to the docs (#543)
This commit is contained in:
@ -6,9 +6,9 @@
|
||||
|
||||
import 'dart:math';
|
||||
|
||||
/* 随机返回一个 数组元素 */
|
||||
/* 随机返回一个数组元素 */
|
||||
int randomAccess(List nums) {
|
||||
// 在区间[0,size) 中随机抽取一个数字
|
||||
// 在区间 [0, nums.length) 中随机抽取一个数字
|
||||
int randomIndex = Random().nextInt(nums.length);
|
||||
// 获取并返回随机元素
|
||||
int randomNum = nums[randomIndex];
|
||||
@ -17,9 +17,8 @@ int randomAccess(List nums) {
|
||||
|
||||
/* 扩展数组长度 */
|
||||
List extend(List nums, int enlarge) {
|
||||
// 初始化一个扩展长度后的数组,元素初始值为0
|
||||
// 初始化一个扩展长度后的数组
|
||||
List<int> res = List.filled(nums.length + enlarge, 0);
|
||||
|
||||
// 将原数组中的所有元素复制到新数组
|
||||
for (var i = 0; i < nums.length; i++) {
|
||||
res[i] = nums[i];
|
||||
@ -30,7 +29,7 @@ List extend(List nums, int enlarge) {
|
||||
|
||||
/* 在数组的索引 index 处插入元素 num */
|
||||
void insert(List nums, int num, int index) {
|
||||
// 把索引index以及之后的所有元素向后移动一位
|
||||
// 把索引 index 以及之后的所有元素向后移动一位
|
||||
for (var i = nums.length - 1; i > index; i--) {
|
||||
nums[i] = nums[i - 1];
|
||||
}
|
||||
@ -40,6 +39,7 @@ void insert(List nums, int num, int index) {
|
||||
|
||||
/* 删除索引 index 处元素 */
|
||||
void remove(List nums, int index) {
|
||||
// 把索引 index 之后的所有元素向前移动一位
|
||||
for (var i = index; i < nums.length - 1; i++) {
|
||||
nums[i] = nums[i + 1];
|
||||
}
|
||||
@ -56,7 +56,7 @@ void traverse(List nums) {
|
||||
for (var num in nums) {
|
||||
count++;
|
||||
}
|
||||
// 通过forEach方法遍历数组
|
||||
// 通过 forEach 方法遍历数组
|
||||
nums.forEach((element) {
|
||||
count++;
|
||||
});
|
||||
@ -71,8 +71,8 @@ int find(List nums, int target) {
|
||||
}
|
||||
|
||||
/* Driver Code */
|
||||
int main() {
|
||||
/* 初始化固定长度数组 */
|
||||
void main() {
|
||||
/* 初始化数组 */
|
||||
var arr = List.filled(5, 0);
|
||||
print('数组 arr = $arr');
|
||||
List nums = [1, 3, 2, 5, 4];
|
||||
@ -100,6 +100,4 @@ int main() {
|
||||
/* 查找元素 */
|
||||
int index = find(nums, 3);
|
||||
print("在 nums 中查找元素 3 ,得到索引 = $index");
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -17,6 +17,7 @@ void insert(ListNode n0, ListNode P) {
|
||||
/* 删除链表的节点 n0 之后的首个节点 */
|
||||
void remove(ListNode n0) {
|
||||
if (n0.next == null) return;
|
||||
// n0 -> P -> n1
|
||||
ListNode P = n0.next!;
|
||||
ListNode? n1 = P.next;
|
||||
n0.next = n1;
|
||||
@ -45,9 +46,9 @@ int find(ListNode? head, int target) {
|
||||
}
|
||||
|
||||
/* Driver Code */
|
||||
int main() {
|
||||
void main() {
|
||||
// 初始化链表
|
||||
//初始化各个节点
|
||||
// 初始化各个节点
|
||||
ListNode n0 = ListNode(1);
|
||||
ListNode n1 = ListNode(3);
|
||||
ListNode n2 = ListNode(2);
|
||||
@ -79,6 +80,4 @@ int main() {
|
||||
/* 查找节点 */
|
||||
int index = find(n0, 2);
|
||||
print('链表中值为 2 的节点的索引 = $index');
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
*/
|
||||
|
||||
/* Driver Code */
|
||||
int main() {
|
||||
void main() {
|
||||
/* 初始化列表 */
|
||||
List<int> list = [1, 3, 2, 5, 4];
|
||||
print('列表 list = $list');
|
||||
@ -57,6 +57,4 @@ int main() {
|
||||
/* 排序列表 */
|
||||
list.sort();
|
||||
print('排序列表后 list = $list');
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -94,7 +94,7 @@ class MyList {
|
||||
}
|
||||
|
||||
/* Driver Code */
|
||||
int main() {
|
||||
void main() {
|
||||
/* 初始化列表 */
|
||||
MyList list = MyList();
|
||||
/* 尾部添加元素 */
|
||||
@ -129,6 +129,4 @@ int main() {
|
||||
}
|
||||
print(
|
||||
'扩容后的列表 list = ${list.toArray()} ,容量 = ${list.capacity()} ,长度 = ${list.size()}');
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -89,7 +89,7 @@ TreeNode? buildTree(int n) {
|
||||
}
|
||||
|
||||
/* Driver Code */
|
||||
int main() {
|
||||
void main() {
|
||||
int n = 5;
|
||||
// 常数阶
|
||||
constant(n);
|
||||
@ -102,5 +102,4 @@ int main() {
|
||||
// 指数阶
|
||||
TreeNode? root = buildTree(n);
|
||||
printTree(root);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -50,7 +50,7 @@ int bubbleSort(List<int> nums) {
|
||||
int count = 0; // 计数器
|
||||
// 外循环:未排序区间为 [0, i]
|
||||
for (var i = nums.length - 1; i > 0; i--) {
|
||||
// 内循环:将未排序区间 [0, i] 中的最大元素交换至该区间的最右端
|
||||
// 内循环:将未排序区间 [0, i] 中的最大元素交换至该区间的最右端
|
||||
for (var j = 0; j < i; j++) {
|
||||
if (nums[j] > nums[j + 1]) {
|
||||
// 交换 nums[j] 与 nums[j + 1]
|
||||
@ -122,7 +122,7 @@ int factorialRecur(int n) {
|
||||
}
|
||||
|
||||
/* Driver Code */
|
||||
int main() {
|
||||
void main() {
|
||||
// 可以修改 n 运行,体会一下各种复杂度的操作数量变化趋势
|
||||
int n = 8;
|
||||
print('输入数据大小 n = $n');
|
||||
@ -160,5 +160,4 @@ int main() {
|
||||
|
||||
count = factorialRecur(n);
|
||||
print('阶乘阶(递归实现)的计算操作数量 = $count');
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -29,7 +29,7 @@ int findOne(List<int> nums) {
|
||||
}
|
||||
|
||||
/* Driver Code */
|
||||
int main() {
|
||||
void main() {
|
||||
for (var i = 0; i < 10; i++) {
|
||||
int n = 100;
|
||||
final nums = randomNumbers(n);
|
||||
@ -37,6 +37,4 @@ int main() {
|
||||
print('\n数组 [ 1, 2, ..., n ] 被打乱后 = $nums');
|
||||
print('数字 1 的索引为 + $index');
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -34,7 +34,8 @@ void main() {
|
||||
print("\n遍历键值对 Key->Value");
|
||||
map.forEach((key, value) => print("$key -> $value"));
|
||||
print("\n单独遍历键 Key");
|
||||
map.forEach((key, value) => print("$key"));
|
||||
map.keys.forEach((key) => print(key));
|
||||
print("\n单独遍历值 Value");
|
||||
map.forEach((key, value) => print("$value"));
|
||||
map.values.forEach((value) => print(value));
|
||||
}
|
||||
|
||||
@ -27,7 +27,6 @@ void main() {
|
||||
print("元素 1 队首入队后 deque = $deque");
|
||||
|
||||
/* 元素出队 */
|
||||
|
||||
final int popLast = deque.removeLast();
|
||||
print("队尾出队元素 = $popLast,队尾出队后 deque = $deque");
|
||||
final int popFirst = deque.removeFirst();
|
||||
|
||||
Reference in New Issue
Block a user